release: started
This commit is contained in:
10
bin/release
Executable file
10
bin/release
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require_relative '../lib/release/commander'
|
||||||
|
|
||||||
|
commander = Release::Commander.new(ARGV)
|
||||||
|
if commander.valid?
|
||||||
|
commander.execute
|
||||||
|
else
|
||||||
|
commander.usage
|
||||||
|
end
|
||||||
29
lib/release/base.rb
Normal file
29
lib/release/base.rb
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
require_relative '../shared/branchability'
|
||||||
|
require_relative '../shared/runnable'
|
||||||
|
|
||||||
|
module Release
|
||||||
|
|
||||||
|
class Base
|
||||||
|
|
||||||
|
include Shared::Branchability
|
||||||
|
include Shared::Runnable
|
||||||
|
|
||||||
|
attr_reader :argv
|
||||||
|
|
||||||
|
def initialize (argv)
|
||||||
|
@argv = argv
|
||||||
|
end
|
||||||
|
|
||||||
|
def help
|
||||||
|
"TBD"
|
||||||
|
end
|
||||||
|
|
||||||
|
def usage
|
||||||
|
puts
|
||||||
|
puts "USAGE: #{help}"
|
||||||
|
puts
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
34
lib/release/commander.rb
Normal file
34
lib/release/commander.rb
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
require_relative './loader'
|
||||||
|
|
||||||
|
module Release
|
||||||
|
|
||||||
|
class Commander
|
||||||
|
|
||||||
|
COMMANDS = [
|
||||||
|
:help,
|
||||||
|
].sort
|
||||||
|
|
||||||
|
DEFAULT = :help
|
||||||
|
|
||||||
|
attr_reader :subcommand
|
||||||
|
|
||||||
|
def initialize (argv)
|
||||||
|
key = (argv[0] ? argv[0].to_sym : :branch)
|
||||||
|
@subcommand = Release::Loader.new(COMMANDS,DEFAULT).create(key,argv)
|
||||||
|
end
|
||||||
|
|
||||||
|
def valid?
|
||||||
|
subcommand.valid?
|
||||||
|
end
|
||||||
|
|
||||||
|
def usage
|
||||||
|
subcommand.usage
|
||||||
|
end
|
||||||
|
|
||||||
|
def execute
|
||||||
|
subcommand.execute
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
30
lib/release/help.rb
Normal file
30
lib/release/help.rb
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
require_relative './base'
|
||||||
|
require_relative './commander'
|
||||||
|
require_relative './loader'
|
||||||
|
|
||||||
|
module Release
|
||||||
|
|
||||||
|
class Help < Release::Base
|
||||||
|
|
||||||
|
COMMANDS = Release::Commander::COMMANDS
|
||||||
|
DEFAULT = Release::Commander::DEFAULT
|
||||||
|
|
||||||
|
def valid?
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def help
|
||||||
|
"release help"
|
||||||
|
end
|
||||||
|
|
||||||
|
def execute
|
||||||
|
puts
|
||||||
|
loader = Release::Loader.new(COMMANDS,DEFAULT)
|
||||||
|
loader.create_all(argv).each do |cmd|
|
||||||
|
puts cmd.help
|
||||||
|
end
|
||||||
|
puts
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
28
lib/release/loader.rb
Normal file
28
lib/release/loader.rb
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
module Release
|
||||||
|
|
||||||
|
class Loader
|
||||||
|
attr_reader :commands, :default
|
||||||
|
|
||||||
|
def initialize commands, default
|
||||||
|
@commands = commands
|
||||||
|
@default = default
|
||||||
|
end
|
||||||
|
|
||||||
|
def create key, argv
|
||||||
|
key = default unless commands.include? key
|
||||||
|
require_relative "./#{key}"
|
||||||
|
klass = Module.const_get "Release::#{key.to_s.capitalize}"
|
||||||
|
klass.new(argv)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_all argv
|
||||||
|
commands.map { |x| create(x,argv) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def search pattern
|
||||||
|
regexp = Regexp.new(pattern)
|
||||||
|
commands.select { |x| regexp.match(x.to_s) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user