class Cli
Public Class Methods
new(name: 'sampleapp', description: 'sample app created by jimuguri', version: '0.0')
click to toggle source
# File lib/jimuguri/cli.rb, line 5 def initialize(name: 'sampleapp', description: 'sample app created by jimuguri', version: '0.0') @name = name @description = description @version = version @cmds = {} @cmd_helps = {} init_help init_version @opt = OptionParser.new @options = {} @opt_helps = [] end
Public Instance Methods
actions()
click to toggle source
# File lib/jimuguri/cli.rb, line 72 def actions @cmds end
add_action(cmd, help, &blk)
click to toggle source
add action by given block
# File lib/jimuguri/cli.rb, line 39 def add_action(cmd, help, &blk) if !block_given? raise 'block must be given' end @cmds[cmd.to_sym] = blk @cmd_helps[cmd.to_sym] = help end
add_option(short, long, message)
click to toggle source
# File lib/jimuguri/cli.rb, line 47 def add_option(short, long, message) @opt.on("-#{short}", "--#{long}", message) {|v| @options[long.split(' ')[0].to_sym] = v} @opt_helps.push "-#{short} --#{long}\t#{message}" end
description()
click to toggle source
# File lib/jimuguri/cli.rb, line 80 def description @description end
generate_help()
click to toggle source
# File lib/jimuguri/cli.rb, line 106 def generate_help # concat commands commands = "COMMANDS:\n" @cmd_helps.map {|cmd, help| commands << " #{cmd.to_s}\t#{help}\n"} options = "\nOPTIONS:\n" @opt_helps.map {|help| options << " #{help}\n"} help_string + commands + options end
help()
click to toggle source
# File lib/jimuguri/cli.rb, line 102 def help generate_help end
help_string()
click to toggle source
# File lib/jimuguri/cli.rb, line 117 def help_string <<~"HERE" NAME: #{@name} - #{@description} USAGE: #{@name} command [command options] [arguments...] VERSION: #{version} HERE end
init_help()
click to toggle source
auto generate help
# File lib/jimuguri/cli.rb, line 21 def init_help help_proc = Proc.new do print_help end @cmds[:help] = help_proc @cmd_helps[:help] = 'Shows a list of commands or help for one command' end
init_version()
click to toggle source
auto generate version
# File lib/jimuguri/cli.rb, line 30 def init_version version_proc = Proc.new do print_version end @cmds[:version] = version_proc @cmd_helps[:version] = 'Shows version' end
name()
click to toggle source
# File lib/jimuguri/cli.rb, line 76 def name @name end
options()
click to toggle source
# File lib/jimuguri/cli.rb, line 88 def options @options end
print_help()
click to toggle source
# File lib/jimuguri/cli.rb, line 97 def print_help puts help exit(0) end
print_version()
click to toggle source
# File lib/jimuguri/cli.rb, line 92 def print_version puts version exit(0) end
run(arg)
click to toggle source
# File lib/jimuguri/cli.rb, line 52 def run(arg) print_help if arg.size == 0 # disable optparse default help, version print_help if arg.include?('-h') || arg.include?('--help') print_version if arg.include?('-v') || arg.include?('--version') # parse begin @opt.parse!(arg) rescue print_help end action = @cmds[arg[0].to_sym] print_help if action.nil? action.call end
version()
click to toggle source
# File lib/jimuguri/cli.rb, line 84 def version @version end