diff options
Diffstat (limited to 'lib/leap_cli')
| -rw-r--r-- | lib/leap_cli/app.rb | 57 | 
1 files changed, 57 insertions, 0 deletions
diff --git a/lib/leap_cli/app.rb b/lib/leap_cli/app.rb new file mode 100644 index 0000000..90c4ae9 --- /dev/null +++ b/lib/leap_cli/app.rb @@ -0,0 +1,57 @@ +require 'gli' +require 'highline' +require 'forwardable' +require 'lib_ext/gli' # our custom extensions to gli + +# +# Typically, GLI and Highline methods are loaded into the global namespace. +# Instead, here we load these into the module LeapCli::Commands in order to +# ensure that the cli logic and code is kept isolated to leap_cli/commands/*.rb +# +# no cheating! +# +module LeapCli::Commands +  extend GLI::App +  extend Forwardable + +  # +  # delegate highline methods to make them available to sub-commands +  # +  @terminal = HighLine.new +  def_delegator :@terminal, :ask,    'self.ask' +  def_delegator :@terminal, :agree,  'self.agree' +  def_delegator :@terminal, :choose, 'self.choose' +  def_delegator :@terminal, :say,    'self.say' +  def_delegator :@terminal, :color,  'self.color' +  def_delegator :@terminal, :list,   'self.list' + +  # +  # make config manager available as 'manager' +  # +  def self.manager +    @manager ||= begin +      manager = LeapCli::Config::Manager.new +      manager.load +      manager +    end +  end + +  # +  # info about leap command line suite +  # +  program_desc       LeapCli::SUMMARY +  program_long_desc  LeapCli::DESCRIPTION + +  # +  # handle --version ourselves +  # +  if ARGV.grep(/--version/).any? +    puts "leap #{LeapCli::VERSION}, ruby #{RUBY_VERSION}" +    exit(0) +  end + +  # +  # load commands and run +  # +  commands_from('leap_cli/commands') +end  | 
