Class: Server::ArgumentsParser
Overview
The ArgumentsParser class
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#parser ⇒ Object
readonly
Returns the value of attribute parser.
Instance Method Summary collapse
- #banner ⇒ Object
- #help ⇒ Object
- #idle_reading ⇒ Object
- #idle_writing ⇒ Object
-
#initialize(option_parser = OptionParser.new) ⇒ ArgumentsParser
constructor
A new instance of ArgumentsParser.
- #log_level ⇒ Object
- #log_requests ⇒ Object
- #port ⇒ Object
- #ssl ⇒ Object
- #validated_port(value, integer_pattern = /^\d+$/) ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(option_parser = OptionParser.new) ⇒ ArgumentsParser
Returns a new instance of ArgumentsParser.
23 24 25 26 27 28 |
# File 'lib/server/argument_parser.rb', line 23 def initialize(option_parser = OptionParser.new) @parser = option_parser = ::Server.server_config.dup @flags = i[ port ssl idle_reading idle_writing log_requests log_level help version] @flags.each { |method_name| method(method_name)&.call if respond_to?(method_name) } end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
21 22 23 |
# File 'lib/server/argument_parser.rb', line 21 def end |
#parser ⇒ Object (readonly)
Returns the value of attribute parser.
21 22 23 |
# File 'lib/server/argument_parser.rb', line 21 def parser @parser end |
Instance Method Details
#banner ⇒ Object
30 31 32 33 34 |
# File 'lib/server/argument_parser.rb', line 30 def @parser. = "Usage: #{File.basename($PROGRAM_NAME)} [port] [options]" @parser.separator '' @parser.separator 'Options:' end |
#help ⇒ Object
81 82 83 84 85 86 |
# File 'lib/server/argument_parser.rb', line 81 def help @parser.on_tail('-?', '--help', 'Show this message') do puts @parser exit end end |
#idle_reading ⇒ Object
56 57 58 59 60 |
# File 'lib/server/argument_parser.rb', line 56 def idle_reading @parser.on('--idle-reading=seconds', 'Amount of time channel can idle without incoming data') do |v| [:idle_reading] = v.to_i end end |
#idle_writing ⇒ Object
62 63 64 65 66 |
# File 'lib/server/argument_parser.rb', line 62 def idle_writing @parser.on('--idle-writing=seconds', 'Amount of time channel can idle without outgoing data') do |v| [:idle_writing] = v.to_i end end |
#log_level ⇒ Object
74 75 76 77 78 79 |
# File 'lib/server/argument_parser.rb', line 74 def log_level @parser.on_tail('-v', '--verbose', 'Increase verbosity') do current_level = .fetch(:log_level, 0) [:log_level] = current_level - 1 end end |
#log_requests ⇒ Object
68 69 70 71 72 |
# File 'lib/server/argument_parser.rb', line 68 def log_requests @parser.on('-r', '--log-requests', 'Include individual request info in log output') do [:log_requests] = true end end |
#port ⇒ Object
43 44 45 46 47 48 |
# File 'lib/server/argument_parser.rb', line 43 def port description = "Port on which to listen for connections; default: #{@options[:port]}" @parser.on('-p', '--port=<port>', Integer, description) do |v| [:port] = validated_port(v).to_i end end |
#ssl ⇒ Object
50 51 52 53 54 |
# File 'lib/server/argument_parser.rb', line 50 def ssl @parser.on('-s', '--ssl', "Enable SSL socket server; default: #{@options[:ssl]}") do [:ssl] = true end end |
#validated_port(value, integer_pattern = /^\d+$/) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/server/argument_parser.rb', line 36 def validated_port(value, integer_pattern = /^\d+$/) raise OptionParser::InvalidArgument, "Invalid port: #{value}" unless \ integer_pattern.match?(value.to_s) && value.positive? && value < 65_536 value end |
#version ⇒ Object
88 89 90 91 92 93 |
# File 'lib/server/argument_parser.rb', line 88 def version @parser.on_tail('--version', 'Show version') do puts "#{File.basename($PROGRAM_NAME)} version #{::Server::VERSION}" exit end end |