Inversion::CLI::
Subcommand
module
Convenience module for subcommand registration syntax sugar.
Extension callback – register the extending object as a subcommand.
def self::extended( mod )
Inversion::CLI.log.debug "Registering subcommands from %p" % [ mod ]
Inversion::CLI.register_subcommands( mod )
end
Display the given list of ‘items`.
def display_list( items )
items.flatten.each do |item|
self.prompt.say( "- %s" % [ self.highlight_string(item) ] )
end
end
display_table( header, rows )
Output a table with the given ‘header` (an array) and `rows` (an array of arrays).
def display_table( header, rows )
table = TTY::Table.new( header, rows )
renderer = nil
if hl.enabled?
renderer = TTY::Table::Renderer::Unicode.new(
table,
multiline: true,
padding: [0,1,0,1]
)
renderer.border.style = :dim
else
renderer = TTY::Table::Renderer::ASCII.new(
table,
multiline: true,
padding: [0,1,0,1]
)
end
puts renderer.render
end
Return the specified ‘string` in the ’error’ ANSI color.
def error_string( string )
return hl.error( string )
end
exit_now!( message, exit_code=1 )
Exit with the specified ‘exit_code` after printing the given `message`.
def exit_now!( message, exit_code=1 )
raise GLI::CustomExit.new( message, exit_code )
end
headline_string( string )
Return the specified ‘string` in the ’headline’ ANSI color.
def headline_string( string )
return hl.headline( string )
end
Exit with a helpful ‘message` and display the usage.
def help_now!( message=nil )
exception = OptionParser::ParseError.new( message )
def exception.exit_code; 64; end
raise exception
end
highlight_string( string )
Return the specified ‘string` in the ’highlight’ ANSI color.
def highlight_string( string )
return hl.highlight( string )
end
Return the global Pastel object for convenient formatting, color, etc.
def hl
return Inversion::CLI.pastel
end
load_template( tmplpath )
Load the Inversion::Template
from the specified ‘tmplpath` and return it. If there is an error loading the template, output the error and return `nil`.
def load_template( tmplpath )
template = Inversion::Template.load( tmplpath )
return template
rescue Errno => err
self.prompt.say "Failed to load %s: %s" % [ tmplpath, err.message ]
return nil
rescue Inversion::ParseError => err
self.prompt.say "%s: Invalid template: %p: %s" %
[ tmplpath, err.class, err.message ]
self.prompt.say( err.backtrace.join("\n ") ) if $DEBUG
return nil
end
Output a blank line
def output_blank_line
self.prompt.say( "\n" )
end
Get the prompt (a TTY::Prompt object)
def prompt
return Inversion::CLI.prompt
end
Return the specified ‘string` in the ’success’ ANSI color.
def success_string( string )
return hl.success( string )
end
unless_dry_run( description, return_value=true )
unless_dryrun( description, return_value=true ) { || ... }
In dry-run mode, output the description instead of running the provided block and return the ‘return_value`. If dry-run mode is not enabled, yield to the block.
def unless_dryrun( description, return_value=true )
if $DRYRUN
self.log.warn( "DRYRUN> #{description}" )
return return_value
else
return yield
end
end
Return the count of visible (i.e., non-control) characters in the given ‘string`.
def visible_chars( string )
return string.to_s.gsub(/\e\[.*?m/, '').scan( /\P{Cntrl}/ ).size
end