wycats-thor 0.11.2 → 0.11.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/thor.rb +20 -11
- data/lib/thor/actions.rb +36 -6
- data/lib/thor/actions/file_manipulation.rb +1 -0
- data/lib/thor/base.rb +15 -14
- data/lib/thor/group.rb +1 -0
- data/lib/thor/runner.rb +2 -6
- data/lib/thor/shell/basic.rb +6 -11
- data/lib/thor/shell/color.rb +10 -10
- metadata +2 -2
data/lib/thor.rb
CHANGED
@@ -166,16 +166,19 @@ class Thor
|
|
166
166
|
shell.say task.description
|
167
167
|
else
|
168
168
|
list = (options[:short] ? tasks : all_tasks).map do |_, task|
|
169
|
-
[ banner(task, options[:namespace])
|
169
|
+
item = [ " " + banner(task, options[:namespace]) ]
|
170
|
+
item << if task.short_description
|
171
|
+
"\n # #{task.short_description}\n"
|
172
|
+
else
|
173
|
+
"\n"
|
174
|
+
end
|
170
175
|
end
|
171
176
|
|
172
177
|
if options[:short]
|
173
|
-
shell.print_table(list
|
178
|
+
shell.print_table(list)
|
174
179
|
else
|
175
180
|
shell.say "Tasks:"
|
176
|
-
shell.print_table(list
|
177
|
-
shell.say
|
178
|
-
|
181
|
+
shell.print_table(list)
|
179
182
|
class_options_help(shell, "Class")
|
180
183
|
end
|
181
184
|
end
|
@@ -196,13 +199,19 @@ class Thor
|
|
196
199
|
Thor
|
197
200
|
end
|
198
201
|
|
199
|
-
def valid_task?(meth) #:nodoc:
|
200
|
-
@usage && @desc
|
201
|
-
end
|
202
|
-
|
203
202
|
def create_task(meth) #:nodoc:
|
204
|
-
|
205
|
-
|
203
|
+
if @usage && @desc
|
204
|
+
tasks[meth.to_s] = Thor::Task.new(meth, @desc, @usage, method_options)
|
205
|
+
@usage, @desc, @method_options = nil
|
206
|
+
true
|
207
|
+
elsif self.all_tasks[meth.to_s] || meth.to_sym == :method_missing
|
208
|
+
true
|
209
|
+
else
|
210
|
+
puts "[WARNING] Attempted to create task #{meth.inspect} without usage or description. " <<
|
211
|
+
"Call desc if you want this method to be available as task or declare it inside a " <<
|
212
|
+
"no_tasks{} block. Invoked from #{caller[1].inspect}."
|
213
|
+
false
|
214
|
+
end
|
206
215
|
end
|
207
216
|
|
208
217
|
def initialize_added #:nodoc:
|
data/lib/thor/actions.rb
CHANGED
@@ -158,11 +158,34 @@ class Thor
|
|
158
158
|
inside(@destination_stack.first) { yield }
|
159
159
|
end
|
160
160
|
|
161
|
+
# Loads an external file and execute it in the instance binding.
|
162
|
+
#
|
163
|
+
# ==== Parameters
|
164
|
+
# path<String>:: The path to the file to execute. Can be a web address or
|
165
|
+
# a relative path from the source root.
|
166
|
+
#
|
167
|
+
# ==== Examples
|
168
|
+
#
|
169
|
+
# apply "http://gist.github.com/103208"
|
170
|
+
#
|
171
|
+
# apply "recipes/jquery.rb"
|
172
|
+
#
|
173
|
+
def apply(path, config={})
|
174
|
+
verbose = config.fetch(:verbose, true)
|
175
|
+
path = find_in_source_paths(path) unless path =~ /^http\:\/\//
|
176
|
+
|
177
|
+
say_status :apply, path, verbose
|
178
|
+
shell.padding += 1 if verbose
|
179
|
+
instance_eval(open(path).read)
|
180
|
+
shell.padding -= 1 if verbose
|
181
|
+
end
|
182
|
+
|
161
183
|
# Executes a command.
|
162
184
|
#
|
163
185
|
# ==== Parameters
|
164
186
|
# command<String>:: the command to be executed.
|
165
|
-
# config<Hash>:: give :verbose => false to not log the status.
|
187
|
+
# config<Hash>:: give :verbose => false to not log the status. Specify :with
|
188
|
+
# to append an executable to command executation.
|
166
189
|
#
|
167
190
|
# ==== Example
|
168
191
|
#
|
@@ -172,7 +195,16 @@ class Thor
|
|
172
195
|
#
|
173
196
|
def run(command, config={})
|
174
197
|
return unless behavior == :invoke
|
175
|
-
|
198
|
+
|
199
|
+
destination = relative_to_original_destination_root(destination_root, false)
|
200
|
+
desc = "#{command} from #{destination.inspect}"
|
201
|
+
|
202
|
+
if config[:with]
|
203
|
+
desc = "#{File.basename(config[:with].to_s)} #{desc}"
|
204
|
+
command = "#{config[:with]} #{command}"
|
205
|
+
end
|
206
|
+
|
207
|
+
say_status :run, desc, config.fetch(:verbose, true)
|
176
208
|
`#{command}` unless options[:pretend]
|
177
209
|
end
|
178
210
|
|
@@ -184,8 +216,7 @@ class Thor
|
|
184
216
|
#
|
185
217
|
def run_ruby_script(command, config={})
|
186
218
|
return unless behavior == :invoke
|
187
|
-
|
188
|
-
`#{Thor::Util.ruby_command} #{command}` unless options[:pretend]
|
219
|
+
run "#{command}", config.merge(:with => Thor::Util.ruby_command)
|
189
220
|
end
|
190
221
|
|
191
222
|
# Run a thor command. A hash of options can be given and it's converted to
|
@@ -213,8 +244,7 @@ class Thor
|
|
213
244
|
args.push Thor::Options.to_switches(config)
|
214
245
|
command = args.join(' ').strip
|
215
246
|
|
216
|
-
|
217
|
-
run "thor #{command}", :verbose => false
|
247
|
+
run command, :with => :thor, :verbose => verbose
|
218
248
|
end
|
219
249
|
|
220
250
|
protected
|
data/lib/thor/base.rb
CHANGED
@@ -9,7 +9,8 @@ require 'thor/util'
|
|
9
9
|
|
10
10
|
class Thor
|
11
11
|
HELP_MAPPINGS = %w(-h -? --help -D)
|
12
|
-
THOR_RESERVED_WORDS = %w(invoke shell options behavior root destination_root relative_root
|
12
|
+
THOR_RESERVED_WORDS = %w(invoke shell options behavior root destination_root relative_root
|
13
|
+
action add_file create_file in_root inside run run_ruby_script)
|
13
14
|
|
14
15
|
module Base
|
15
16
|
attr_accessor :options
|
@@ -375,8 +376,16 @@ class Thor
|
|
375
376
|
padding = options.collect{ |o| o.aliases.size }.max.to_i * 4
|
376
377
|
|
377
378
|
options.each do |option|
|
378
|
-
|
379
|
-
|
379
|
+
item = [ option.usage(padding) ]
|
380
|
+
|
381
|
+
item << if option.description
|
382
|
+
"# #{option.description}"
|
383
|
+
else
|
384
|
+
""
|
385
|
+
end
|
386
|
+
|
387
|
+
list << item
|
388
|
+
list << [ "", "# Default: #{option.default}" ] if option.show_default?
|
380
389
|
end
|
381
390
|
|
382
391
|
unless list.empty?
|
@@ -386,7 +395,7 @@ class Thor
|
|
386
395
|
shell.say "Options:"
|
387
396
|
end
|
388
397
|
|
389
|
-
shell.print_table(list, :
|
398
|
+
shell.print_table(list, :ident => 2)
|
390
399
|
shell.say ""
|
391
400
|
end
|
392
401
|
end
|
@@ -405,7 +414,7 @@ class Thor
|
|
405
414
|
#
|
406
415
|
def is_thor_reserved_word?(word, type)
|
407
416
|
return false unless THOR_RESERVED_WORDS.include?(word.to_s)
|
408
|
-
raise "
|
417
|
+
raise "#{word.inspect} is a Thor reserved word and cannot be defined as #{type}"
|
409
418
|
end
|
410
419
|
|
411
420
|
# Build an option and adds it to the given scope.
|
@@ -470,12 +479,10 @@ class Thor
|
|
470
479
|
return unless public_instance_methods.include?(meth) ||
|
471
480
|
public_instance_methods.include?(meth.to_sym)
|
472
481
|
|
473
|
-
|
474
|
-
return if @no_tasks || !valid_task?(meth)
|
482
|
+
return if @no_tasks || !create_task(meth)
|
475
483
|
|
476
484
|
is_thor_reserved_word?(meth, :task)
|
477
485
|
Thor::Base.register_klass_file(self)
|
478
|
-
create_task(meth)
|
479
486
|
end
|
480
487
|
|
481
488
|
# Retrieves a value from superclass. If it reaches the baseclass,
|
@@ -495,12 +502,6 @@ class Thor
|
|
495
502
|
def baseclass #:nodoc:
|
496
503
|
end
|
497
504
|
|
498
|
-
# SIGNATURE: Defines if a given method is a valid_task?. This method is
|
499
|
-
# called before a new method is added to the class.
|
500
|
-
def valid_task?(meth) #:nodoc:
|
501
|
-
true # unless otherwise given
|
502
|
-
end
|
503
|
-
|
504
505
|
# SIGNATURE: Creates a new task if valid_task? is true. This method is
|
505
506
|
# called when a new method is added to the class.
|
506
507
|
def create_task(meth) #:nodoc:
|
data/lib/thor/group.rb
CHANGED
data/lib/thor/runner.rb
CHANGED
@@ -281,15 +281,11 @@ class Thor::Runner < Thor
|
|
281
281
|
unless klass.tasks.empty?
|
282
282
|
base = klass.namespace
|
283
283
|
|
284
|
-
|
285
|
-
|
286
|
-
else
|
287
|
-
say "\033[1;34m#{base}\033[0m"
|
288
|
-
end
|
284
|
+
color = base == "default" ? :magenta : :blue
|
285
|
+
say shell.set_color(base, color, true)
|
289
286
|
say "-" * base.length
|
290
287
|
|
291
288
|
klass.help(shell, :short => true, :namespace => true)
|
292
|
-
say
|
293
289
|
end
|
294
290
|
end
|
295
291
|
end
|
data/lib/thor/shell/basic.rb
CHANGED
@@ -117,13 +117,6 @@ class Thor
|
|
117
117
|
formats[0] = formats[0].insert(0, " " * options[:ident]) if options[:ident]
|
118
118
|
formats << "%s"
|
119
119
|
|
120
|
-
if options[:emphasize_last]
|
121
|
-
table.each do |row|
|
122
|
-
next if row[-1].empty?
|
123
|
-
row[-1] = "# #{row[-1]}"
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
120
|
table.each do |row|
|
128
121
|
row.each_with_index do |column, i|
|
129
122
|
$stdout.print formats[i] % column.to_s
|
@@ -175,11 +168,13 @@ class Thor
|
|
175
168
|
$stderr.puts statement
|
176
169
|
end
|
177
170
|
|
178
|
-
|
171
|
+
# Apply color to the given string with optional bold.
|
172
|
+
#
|
173
|
+
def set_color(string, color, bold=false)
|
174
|
+
string
|
175
|
+
end
|
179
176
|
|
180
|
-
|
181
|
-
string
|
182
|
-
end
|
177
|
+
protected
|
183
178
|
|
184
179
|
def is?(value)
|
185
180
|
value = value.to_s
|
data/lib/thor/shell/color.rb
CHANGED
@@ -44,17 +44,17 @@ class Thor
|
|
44
44
|
# Set the terminal's background ANSI color to white.
|
45
45
|
ON_WHITE = "\e[47m"
|
46
46
|
|
47
|
-
|
47
|
+
# Set color by using a string or one of the defined constants. Based
|
48
|
+
# on Highline implementation. CLEAR is automatically be embedded to
|
49
|
+
# the end of the returned String.
|
50
|
+
#
|
51
|
+
def set_color(string, color, bold=false)
|
52
|
+
color = self.class.const_get(color.to_s.upcase) if color.is_a?(Symbol)
|
53
|
+
bold = bold ? BOLD : ""
|
54
|
+
"#{bold}#{color}#{string}#{CLEAR}"
|
55
|
+
end
|
48
56
|
|
49
|
-
|
50
|
-
# on Highline implementation. CLEAR is automatically be embedded to
|
51
|
-
# the end of the returned String.
|
52
|
-
#
|
53
|
-
def set_color(string, color, bold=false)
|
54
|
-
color = self.class.const_get(color.to_s.upcase) if color.is_a?(Symbol)
|
55
|
-
bold = bold ? BOLD : ""
|
56
|
-
"#{bold}#{color}#{string}#{CLEAR}"
|
57
|
-
end
|
57
|
+
protected
|
58
58
|
|
59
59
|
# Overwrite show_diff to show diff with colors if Diff::LCS is
|
60
60
|
# available.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wycats-thor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yehuda Katz
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-23 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|