class Toycol::Command::Options
Public Class Methods
create_option_parser()
click to toggle source
# File lib/toycol/command.rb, line 26 def create_option_parser OptionParser.new do |opt| opt.banner = "Usage: #{opt.program_name} [-h|--help] [-v|--version] COMMAND [arg...]" opt.on_head("-v", "--version", "Show Toycol version") do opt.version = Toycol::VERSION puts opt.ver exit end opt.on_head("-h", "--help", "Show this message") { help_command(opt) } opt.separator "" opt.separator "Sub commands:" sub_command_summaries.each do |command| opt.separator [opt.summary_indent, command[:name].ljust(31), command[:summary]].join(" ") end end end
create_sub_command_option_parser()
click to toggle source
# File lib/toycol/command.rb, line 45 def create_sub_command_option_parser sub_command_parser = Hash.new { |_k, v| raise ArgumentError, "'#{v}' is not sub command" } sub_command_parser["client"] = client_option_parser sub_command_parser["c"] = client_option_parser sub_command_parser["server"] = server_option_parser sub_command_parser["s"] = server_option_parser sub_command_parser["generate"] = generator_option_parser sub_command_parser["g"] = generator_option_parser sub_command_parser end
parse!(argv)
click to toggle source
# File lib/toycol/command.rb, line 9 def parse!(argv) option_parser = create_option_parser sub_command_option_parser = create_sub_command_option_parser begin option_parser.order!(argv) @options[:command] = argv.shift @options[:request_message] = argv.shift if request_message?(argv.first) @options[:protocol_name] = argv.shift if protocol_name?(argv.first) sub_command_option_parser[@options[:command]].parse!(argv) rescue OptionParser::MissingArgument, OptionParser::InvalidOption, ArgumentError => e abort e.message end @options end
Private Class Methods
client_option_parser()
click to toggle source
# File lib/toycol/command.rb, line 78 def client_option_parser OptionParser.new do |opt| opt.banner = "Usage: #{opt.program_name} client [-h|--help] REQUEST_MESSAGE [arg...]" opt.on("-o HOST", "--host HOST", "connect to HOST (default: localhost)") do |host| Client.host = host end opt.on("-p PORT_NUMBER", "--port PORT_NUMBER", "connect to PORT (default: 9292)") do |port| Client.port = port end opt.on_head("-h", "--help", "Show this message") { help_command(opt) } end end
generator_option_parser()
click to toggle source
# File lib/toycol/command.rb, line 112 def generator_option_parser OptionParser.new do |opt| opt.on("-t TYPE", "--type TYPE", "generate TYPE of template (default: :all)") do |type| @options[:template_type] = type end opt.on_head("-h", "--help", "Show this message") { help_command(opt) } end end
help_command(parser)
click to toggle source
# File lib/toycol/command.rb, line 122 def help_command(parser) puts parser.help exit end
protocol_name?(arg)
click to toggle source
# File lib/toycol/command.rb, line 64 def protocol_name?(arg) %w[geberate g].include?(@options[:command]) \ && arg != "-t" \ && arg != "-h" end
request_message?(arg)
click to toggle source
# File lib/toycol/command.rb, line 58 def request_message?(arg) %w[client c].include?(@options[:command]) \ && arg != "-p" \ && arg != "-h" end
server_option_parser()
click to toggle source
# File lib/toycol/command.rb, line 93 def server_option_parser OptionParser.new do |opt| opt.banner = "Usage: #{opt.program_name} server [-h|--help] APPLICATION_PATH [arg...]" opt.on("-o HOST", "--host HOST", "bind to HOST (default: localhost)") do |host| ::Rack::Handler::Toycol.host = host end opt.on("-p PORT_NUMBER", "--port PORT_NUMBER", "listen on PORT (default: 9292)") do |port| ::Rack::Handler::Toycol.port = port end opt.on("-u SERVER_NAME", "--use SERVER_NAME", "switch using SERVER(puma/builtin)") do |server_name| ::Rack::Handler::Toycol.preferred_background_server = server_name end opt.on_head("-h", "--help", "Show this message") { help_command(opt) } end end
sub_command_summaries()
click to toggle source
# File lib/toycol/command.rb, line 70 def sub_command_summaries [ { name: "client REQUEST_MESSAGE -p PORT", summary: "Send request message to server" }, { name: "server -u SERVER_NAME", summary: "Start proxy and background server" }, { name: "generate NAME -t TYPE", summary: "Generate new protocol or Rack app" } ] end