lib/ggem/cli/commands.rb in ggem-1.9.1 vs lib/ggem/cli/commands.rb in ggem-1.9.2
- old
+ new
@@ -1,16 +1,14 @@
require "ggem/cli/clirb"
require "much-plugin"
module GGem; end
class GGem::CLI
-
InvalidCommandError = Class.new(ArgumentError)
CommandExitError = Class.new(RuntimeError)
class InvalidCommand
-
attr_reader :name, :clirb
def initialize(name)
@name = name
@clirb = CLIRB.new
@@ -28,22 +26,16 @@
"Usage: ggem [COMMAND] [options]\n\n" \
"Options: #{@clirb}\n" \
"Commands:\n" \
"#{COMMANDS.to_s.split("\n").map{ |l| " #{l}" }.join("\n")}\n"
end
-
end
module ValidCommand
include MuchPlugin
- plugin_included do
- include InstanceMethods
- end
-
- module InstanceMethods
-
+ plugin_instance_methods do
def initialize(&clirb_build)
@clirb = CLIRB.new(&clirb_build)
end
def clirb; @clirb; end
@@ -55,24 +47,17 @@
end
def summary
""
end
-
end
-
end
module NotifyCmdCommand
include MuchPlugin
- plugin_included do
- include InstanceMethods
- end
-
- module InstanceMethods
-
+ plugin_instance_methods do
private
def notify(success_msg, &cmd_block)
cmd(&cmd_block)
@stdout.puts success_msg
@@ -83,25 +68,22 @@
if ENV["DEBUG"]
@stdout.puts cmd
@stdout.puts output
end
end
-
end
-
end
module GitRepoCommand
include MuchPlugin
plugin_included do
include ValidCommand
include NotifyCmdCommand
- include InstanceMethods
end
- module InstanceMethods
+ plugin_instance_methods do
def initialize(*args)
super
require "ggem/git_repo"
@repo = GGem::GitRepo.new(Dir.pwd)
@@ -115,11 +97,10 @@
rescue GGem::GitRepo::CmdError => exception
@stderr.puts exception.message
raise CommandExitError
end
end
-
end
end
class GenerateCommand
include GitRepoCommand
@@ -149,23 +130,21 @@
"Usage: ggem generate [options] GEM-NAME\n\n" \
"Options: #{@clirb}\n" \
"Description:\n" \
" #{self.summary}"
end
-
end
module GemspecCommand
include MuchPlugin
plugin_included do
include ValidCommand
include NotifyCmdCommand
- include InstanceMethods
end
- module InstanceMethods
+ plugin_instance_methods do
def initialize(*args)
super
require "ggem/gemspec"
begin
@@ -185,11 +164,10 @@
rescue GGem::Gemspec::CmdError => exception
@stderr.puts exception.message
raise CommandExitError
end
end
-
end
end
class BuildCommand
include GemspecCommand
@@ -210,11 +188,10 @@
"Usage: ggem build [options]\n\n" \
"Options: #{@clirb}\n" \
"Description:\n" \
" #{self.summary}"
end
-
end
class InstallCommand
include GemspecCommand
@@ -240,11 +217,10 @@
"Usage: ggem install [options]\n\n" \
"Options: #{@clirb}\n" \
"Description:\n" \
" #{self.summary}"
end
-
end
class PushCommand
include GemspecCommand
@@ -271,33 +247,28 @@
"Usage: ggem push [options]\n\n" \
"Options: #{@clirb}\n" \
"Description:\n" \
" #{self.summary}"
end
-
end
module ForceTagOptionCommand
include MuchPlugin
plugin_included do
include ValidCommand
- include InstanceMethods
end
- module InstanceMethods
-
+ plugin_instance_methods do
def initialize
super do
option "force-tag", "force tagging even with uncommitted files", {
:abbrev => "f"
}
end
end
-
end
-
end
class TagCommand
include GitRepoCommand
include GemspecCommand
@@ -343,11 +314,10 @@
"Usage: ggem tag [options]\n\n" \
"Options: #{@clirb}\n" \
"Description:\n" \
" #{self.summary}"
end
-
end
class ReleaseCommand
include GemspecCommand
include ForceTagOptionCommand
@@ -374,15 +344,13 @@
"Options: #{@clirb}\n" \
"Description:\n" \
" #{self.summary}\n" \
" (macro for running `ggem tag && ggem push`)"
end
-
end
class CommandSet
-
def initialize(&unknown_cmd_block)
@lookup = Hash.new{ |h,k| unknown_cmd_block.call(k) }
@names = []
@aliases = {}
@summaries = {}
@@ -423,9 +391,7 @@
@to_s ||= @names.map do |n|
"#{n.ljust(max_name_size)} #{@aliases[n].ljust(max_alias_size)} #{@summaries[n]}"
end.join("\n")
end
-
end
-
end