Sha256: b4a0b4c6ab1e17ff3e8a7d385c53e198d862c615ae89228c943414c5010bf732

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

require 'optparse'

require 'outliers/cli/process'

module Outliers
  module CLI

    def self.start
      cmd = ARGV.shift

      case cmd
      when 'process'
        begin
          CLI::Process.new.process
        rescue OptionParser::MissingArgument => e
          puts e.message
          exit 1
        end
      when '-v'
        puts OUTLIERS::VERSION
      else
        puts "Unknown command: '#{cmd}'."
        puts ''
        usage
        exit 1
      end
    end

    def self.usage
      puts 'Usage: outliers command'
      puts ''
      puts 'Append -h for help on specific subcommand.'
      puts ''

      puts 'Commands:'
      commands.each do |cmd|
        $stdout.printf "    %-#{length_of_longest_command}s      %s\n",
                       cmd.command_name,
                       cmd.command_summary
      end
    end

    def self.commands
      return @commands if @commands
      klasses   = Outliers::CLI.constants
      @commands = klasses.map { |klass| Outliers::CLI.const_get(klass).new }
    end

    def self.length_of_longest_command
      commands.map { |c| c.command_name.length }.max
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
outliers-0.3.1 lib/outliers/cli.rb
outliers-0.3.0 lib/outliers/cli.rb