Class: Magellan::Cli::Base
- Inherits:
-
Thor
- Object
- Thor
- Magellan::Cli::Base
show all
- Defined in:
- lib/magellan/cli/base.rb
Class Method Summary
collapse
Class Method Details
.command_help(shell, command_name) ⇒ Object
override Thor.command_help
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
|
# File 'lib/magellan/cli/base.rb', line 250
def command_help(shell, command_name)
meth = normalize_command_name(command_name)
command = all_commands[meth]
handle_no_command_error(meth) unless command
shell.say "Usage:"
shell.say " #{banner(command)}"
shell.say
class_options_help(shell, nil => command.options.map { |_, o| o })
if command.long_description
shell.say "Description:"
shell.print_wrapped(command.long_description, :indent => 2)
else
shell.say command.description
end
end
|
.help(shell, subcommand = false) ⇒ Object
overwrite Thor.help method
236
237
238
239
240
241
242
243
244
245
246
247
|
# File 'lib/magellan/cli/base.rb', line 236
def help(shell, subcommand = false)
update_common_help_message
if defined?(@package_name) && @package_name
shell.say "#{@package_name} commands:"
else
shell.say "Commands:"
end
shell.print_table(sorted_printable_commands(true, subcommand), :indent => 2, :truncate => true)
shell.say
class_options_help(shell)
end
|
.log_error(msg) ⇒ Object
181
182
183
|
# File 'lib/magellan/cli/base.rb', line 181
def log_error(msg)
puts_with_color(31, msg)
end
|
.log_info(msg) ⇒ Object
172
173
174
|
# File 'lib/magellan/cli/base.rb', line 172
def log_info(msg)
puts_with_color(0, msg)
end
|
.log_success(msg) ⇒ Object
178
179
180
|
# File 'lib/magellan/cli/base.rb', line 178
def log_success(msg)
puts_with_color(32, msg)
end
|
.log_verbose(msg, flag = true) ⇒ Object
169
170
171
|
# File 'lib/magellan/cli/base.rb', line 169
def log_verbose(msg, flag = true)
puts_with_color(34, msg) if flag
end
|
.log_warning(msg) ⇒ Object
175
176
177
|
# File 'lib/magellan/cli/base.rb', line 175
def log_warning(msg)
puts_with_color(33, msg)
end
|
.puts_with_color(color_no, msg) ⇒ Object
165
166
167
|
# File 'lib/magellan/cli/base.rb', line 165
def puts_with_color(color_no, msg)
$stderr.puts("\e[#{color_no}m#{msg}\e[0m")
end
|
.sorted_commands(all = true) ⇒ Object
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
# File 'lib/magellan/cli/base.rb', line 185
def sorted_commands(all = true)
cmd_hash = all_commands.dup
Thor::Util.thor_classes_in(self).each do |klass|
cmd_hash.update(klass.commands)
end
if order = self.const_get(:COMMAND_ORDER) rescue nil
result = order.map{|i| cmd_hash[i]}
result += (cmd_hash.keys - order).map{|i| cmd_hash[i]}
else
result = cmd_hash.values
end
if idx = result.index{|cmd| cmd.name == "help" }
h = result.delete_at(idx)
result << h
end
return result
end
|
.sorted_printable_commands(all = true, subcommand = false) ⇒ Object
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
# File 'lib/magellan/cli/base.rb', line 203
def sorted_printable_commands(all = true, subcommand = false)
list = printable_commands(all, subcommand)
Thor::Util.thor_classes_in(self).each do |klass|
list += klass.printable_commands(false)
end
order = self.const_get(:COMMAND_ORDER) rescue nil
if order
orig = list
list = order.map do |ptn|
idx = orig.index{|t| t.first =~ /\b#{ptn}\b/}
raise "#{ptn} not found" unless idx
orig.delete_at(idx)
end
list += orig end
if idx = list.index{|t| t.first =~ /\bhelp\b/ }
h = list.delete_at(idx)
list << h
end
return list
end
|
.update_common_help_message ⇒ Object
229
230
231
232
233
|
# File 'lib/magellan/cli/base.rb', line 229
def update_common_help_message
if cmd = all_commands["help"]
cmd.description = I18n.t(:help, scope: [:base, :cmd])
end
end
|