lib/simple_deploy/cli.rb in simple_deploy-0.6.4 vs lib/simple_deploy/cli.rb in simple_deploy-0.6.5

- old
+ new

@@ -5,25 +5,26 @@ require 'simple_deploy/cli/attributes' require 'simple_deploy/cli/clone' require 'simple_deploy/cli/create' require 'simple_deploy/cli/deploy' require 'simple_deploy/cli/destroy' +require 'simple_deploy/cli/environments' require 'simple_deploy/cli/events' require 'simple_deploy/cli/execute' require 'simple_deploy/cli/instances' require 'simple_deploy/cli/list' require 'simple_deploy/cli/outputs' require 'simple_deploy/cli/parameters' require 'simple_deploy/cli/protect' require 'simple_deploy/cli/resources' -require 'simple_deploy/cli/ssh' require 'simple_deploy/cli/status' require 'simple_deploy/cli/template' require 'simple_deploy/cli/update' module SimpleDeploy module CLI + def self.start cmd = ARGV.shift case cmd when 'attributes' @@ -35,11 +36,11 @@ when 'destroy', 'delete' CLI::Destroy.new.destroy when 'deploy' CLI::Deploy.new.deploy when 'environments' - CLI::List.new.environments + CLI::Environments.new.environments when 'events' CLI::Events.new.show when 'execute' CLI::Execute.new.execute when 'instances' @@ -61,19 +62,42 @@ when 'ssh' CLI::SSH.new.show when 'update' CLI::Update.new.update when '-h' - puts "simple_deploy [attributes|clone|create|deploy|destroy|environments|events|execute|instances|list|outputs|parameters|protect|resources|ssh|status|template|update] [options]" - puts "Append -h for help on specific subcommand." + usage when '-v' puts SimpleDeploy::VERSION else puts "Unknown command: '#{cmd}'." - puts "simple_deploy [attributes|clone|create|deploy|destroy|environments|events|execute|instances|list|outputs|parameters|protect|resources|ssh|status|template|update] [options]" - puts "Append -h for help on specific subcommand." + puts '' + usage exit 1 end + end + + def self.usage + puts 'Usage: simple_deploy 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 = SimpleDeploy::CLI.constants.reject { |c| c == :Shared } + @commands = klasses.map { |klass| SimpleDeploy::CLI.const_get(klass).new } + end + + def self.length_of_longest_command + commands.map { |c| c.command_name.length }.max end end end