lib/ggem/cli.rb in ggem-1.9.1 vs lib/ggem/cli.rb in ggem-1.9.2

- old
+ new

@@ -1,63 +1,58 @@ require "ggem/version" require "ggem/cli/clirb" require "ggem/cli/commands" -module GGem +module GGem; end +class GGem::CLI + COMMANDS = CommandSet.new{ |unknown| InvalidCommand.new(unknown) }.tap do |c| + c.add(GenerateCommand, "generate", "g") + c.add(BuildCommand, "build", "b") + c.add(InstallCommand, "install", "i") + c.add(PushCommand, "push", "p") + c.add(TagCommand, "tag", "t") + c.add(ReleaseCommand, "release", "r") + end - class CLI + def self.run(args) + self.new.run(args) + end - COMMANDS = CommandSet.new{ |unknown| InvalidCommand.new(unknown) }.tap do |c| - c.add(GenerateCommand, "generate", "g") - c.add(BuildCommand, "build", "b") - c.add(InstallCommand, "install", "i") - c.add(PushCommand, "push", "p") - c.add(TagCommand, "tag", "t") - c.add(ReleaseCommand, "release", "r") - end + def initialize(kernel = nil, stdout = nil, stderr = nil) + @kernel = kernel || Kernel + @stdout = stdout || $stdout + @stderr = stderr || $stderr + end - def self.run(args) - self.new.run(args) + def run(args) + begin + cmd_name = args.shift + cmd = COMMANDS[cmd_name] + cmd.run(args) + rescue CLIRB::HelpExit + @stdout.puts cmd.help + rescue CLIRB::VersionExit + @stdout.puts GGem::VERSION + rescue CLIRB::Error, ArgumentError, InvalidCommandError => exception + display_debug(exception) + @stderr.puts "#{exception.message}\n\n" + @stdout.puts cmd.help + @kernel.exit 1 + rescue CommandExitError + @kernel.exit 1 + rescue StandardError => exception + @stderr.puts "#{exception.class}: #{exception.message}" + @stderr.puts exception.backtrace.join("\n") + @kernel.exit 1 end + @kernel.exit 0 + end - def initialize(kernel = nil, stdout = nil, stderr = nil) - @kernel = kernel || Kernel - @stdout = stdout || $stdout - @stderr = stderr || $stderr - end + private - def run(args) - begin - cmd_name = args.shift - cmd = COMMANDS[cmd_name] - cmd.run(args) - rescue CLIRB::HelpExit - @stdout.puts cmd.help - rescue CLIRB::VersionExit - @stdout.puts GGem::VERSION - rescue CLIRB::Error, ArgumentError, InvalidCommandError => exception - display_debug(exception) - @stderr.puts "#{exception.message}\n\n" - @stdout.puts cmd.help - @kernel.exit 1 - rescue CommandExitError - @kernel.exit 1 - rescue StandardError => exception - @stderr.puts "#{exception.class}: #{exception.message}" - @stderr.puts exception.backtrace.join("\n") - @kernel.exit 1 - end - @kernel.exit 0 + def display_debug(exception) + if ENV["DEBUG"] + @stderr.puts "#{exception.class}: #{exception.message}" + @stderr.puts exception.backtrace.join("\n") end - - private - - def display_debug(exception) - if ENV["DEBUG"] - @stderr.puts "#{exception.class}: #{exception.message}" - @stderr.puts exception.backtrace.join("\n") - end - end - end - end