Class: Inversion::CLI

Inherits:
Object
  • Object
show all
Extended by:
GLI::App, MethodUtilities, Loggability
Defined in:
lib/inversion/cli.rb

Overview

Command class for the ‘inversion’ command-line tool.

Defined Under Namespace

Modules: ApiCommand, Subcommand, TagTokensCommand, TreeCommand

Class Method Summary collapse

Instance Method Summary collapse

Methods included from MethodUtilities

singleton_attr_accessor, singleton_attr_reader, singleton_attr_writer

Class Method Details

.add_registered_subcommandsObject

Add the commands from the registered subcommand modules.



139
140
141
142
143
144
145
146
147
# File 'lib/inversion/cli.rb', line 139

def self::add_registered_subcommands
  self.subcommand_modules ||= []
  self.subcommand_modules.each do |mod|
    merged_commands = mod.commands.merge( self.commands )
    self.commands.update( merged_commands )
    command_objs = self.commands_declaration_order | self.commands.values
    self.commands_declaration_order.replace( command_objs )
  end
end

.commands_from(subdir) ⇒ Object

Load commands from any files in the specified directory relative to LOAD_PATHs



396
397
398
399
400
401
# File 'lib/inversion/cli.rb', line 396

def self::commands_from( subdir )
  Gem.find_latest_files( File.join(subdir, '*.rb') ).each do |rbfile|
    self.log.debug "  loading %s..." % [ rbfile ]
    require( rbfile )
  end
end

.pastelObject

Return the Pastel colorizer.



152
153
154
# File 'lib/inversion/cli.rb', line 152

def self::pastel
  @pastel ||= Pastel.new( enabled: $stdout.tty? )
end

.promptObject

Return the TTY prompt used by the command to communicate with the user.



159
160
161
# File 'lib/inversion/cli.rb', line 159

def self::prompt
  @prompt ||= TTY::Prompt.new( output: $stderr )
end

.register_subcommands(mod) ⇒ Object

Add the specified ‘mod`ule containing subcommands to the ’inversion’ command.



130
131
132
133
134
135
# File 'lib/inversion/cli.rb', line 130

def self::register_subcommands( mod )
  self.subcommand_modules ||= []
  self.subcommand_modules.push( mod )
  mod.extend( GLI::DSL, GLI::AppSupport, Loggability )
  mod.log_to( :inversion )
end

.require_additional_libs(requires) ⇒ Object

Load any additional Ruby libraries given with the -r global option.



182
183
184
185
186
187
# File 'lib/inversion/cli.rb', line 182

def self::require_additional_libs( requires)
  requires.each do |path|
    path = "inversion/#{path}" unless path.start_with?( 'inversion/' )
    require( path )
  end
end

.reset_promptObject

Discard the existing HighLine prompt object if one existed. Mostly useful for testing.



166
167
168
# File 'lib/inversion/cli.rb', line 166

def self::reset_prompt
  @prompt = nil
end

.runObject

Overridden – Add registered subcommands immediately before running.



123
124
125
126
# File 'lib/inversion/cli.rb', line 123

def self::run( * )
  self.add_registered_subcommands
  super
end

.set_logging_level(level = nil) ⇒ Object

Set the global logging ‘level` if it’s defined.



172
173
174
175
176
177
178
# File 'lib/inversion/cli.rb', line 172

def self::set_logging_level( level=nil )
  if level
    Loggability.level = level.to_sym
  else
    Loggability.level = :fatal
  end
end

.setup_output(global) ⇒ Object

Set up the output levels and globals based on the associated ‘global` options.



211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
# File 'lib/inversion/cli.rb', line 211

def self::setup_output( global )

  if global[:verbose]
    $VERBOSE = true
    Loggability.level = :info
  end

  if global[:debug]
    $DEBUG = true
    Loggability.level = :debug
  end

  if global[:loglevel]
    Loggability.level = global[:loglevel]
  end

end

.setup_pastel_aliasesObject

Setup pastel color aliases



192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/inversion/cli.rb', line 192

def self::setup_pastel_aliases
  self.pastel.alias_color( :headline, :bold, :white, :on_black )
  self.pastel.alias_color( :success, :bold, :green )
  self.pastel.alias_color( :error, :bold, :red )
  self.pastel.alias_color( :up, :green )
  self.pastel.alias_color( :down, :red )
  self.pastel.alias_color( :unknown, :dark, :yellow )
  self.pastel.alias_color( :disabled, :dark, :white )
  self.pastel.alias_color( :quieted, :dark, :green )
  self.pastel.alias_color( :acked, :yellow )
  self.pastel.alias_color( :highlight, :bold, :yellow )
  self.pastel.alias_color( :search_hit, :black, :on_white )
  self.pastel.alias_color( :prompt, :cyan )
  self.pastel.alias_color( :even_row, :bold )
  self.pastel.alias_color( :odd_row, :reset )
end

Instance Method Details

#subcommand_modulesObject

Registered subcommand modules



119
# File 'lib/inversion/cli.rb', line 119

singleton_attr_accessor :subcommand_modules