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_subcommands ⇒ Object

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

.pastel ⇒ Object

Return the Pastel colorizer.



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

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

.prompt ⇒ Object

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 module 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_prompt ⇒ Object

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

.run ⇒ Object

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_aliases ⇒ Object

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_modules ⇒ Object

Registered subcommand modules



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

singleton_attr_accessor :subcommand_modules