Sha256: 2b4c70f261077b9ba28f68f867cdf63eacdaaa69596c6be2d8a78eab8b8ec631

Contents?: true

Size: 1.38 KB

Versions: 5

Compression:

Stored size: 1.38 KB

Contents

require 'optparse'

require 'roark/cli/shared'

require 'roark/cli/create'
require 'roark/cli/destroy'

module Roark
  module CLI

    def self.start
      cmd = ARGV.shift

      case cmd
      when 'create'
        begin
          CLI::Create.new.create
        rescue OptionParser::MissingArgument => e
          puts e.message
          exit 1
        end
      when 'destroy'
        begin
          CLI::Destroy.new.destroy
        rescue OptionParser::MissingArgument => e
          puts e.message
          exit 1
        end
      when '-h'
        usage
      when '-v'
        puts Roark::VERSION
      else
        puts "Unknown command: '#{cmd}'."
        puts ''
        usage
        exit 1
      end
    end

    def self.usage
      puts 'Usage: roark 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   = Roark::CLI.constants.reject {|c| [:Shared].include? c}
      @commands = klasses.map { |klass| Roark::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

5 entries across 5 versions & 1 rubygems

Version Path
roark-0.2.2 lib/roark/cli.rb
roark-0.2.1 lib/roark/cli.rb
roark-0.2.0 lib/roark/cli.rb
roark-0.1.0 lib/roark/cli.rb
roark-0.0.1 lib/roark/cli.rb