Class: Client::ArgumentsParser
- Inherits:
-
Object
- Object
- Client::ArgumentsParser
- Defined in:
- lib/tcp_server/client.rb
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
- #host ⇒ Object
-
#initialize(parser = OptionParser.new, options = ::Client.client_config.dup) ⇒ ArgumentsParser
constructor
A new instance of ArgumentsParser.
- #log_level ⇒ Object
- #parse_positional_arguments! ⇒ Object
- #port ⇒ Object
- #ssl ⇒ Object
- #validated_port(val, integer_pattern = /^\d+$/) ⇒ Object
- #version ⇒ Object
Constructor Details
#initialize(parser = OptionParser.new, options = ::Client.client_config.dup) ⇒ ArgumentsParser
Returns a new instance of ArgumentsParser.
470 471 472 473 474 475 |
# File 'lib/tcp_server/client.rb', line 470 def initialize(parser = OptionParser.new, = ::Client.client_config.dup) @parser = parser @options = @flags = %i[banner port ssl 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.
468 469 470 |
# File 'lib/tcp_server/client.rb', line 468 def @options end |
#parser ⇒ Object (readonly)
Returns the value of attribute parser.
468 469 470 |
# File 'lib/tcp_server/client.rb', line 468 def parser @parser end |
Instance Method Details
#banner ⇒ Object
477 478 479 480 481 |
# File 'lib/tcp_server/client.rb', line 477 def @parser. = "Usage: #{File.basename($PROGRAM_NAME)} [options] <hostname> [port]" @parser.separator '' @parser.separator 'Options:' end |
#help ⇒ Object
517 518 519 520 521 522 |
# File 'lib/tcp_server/client.rb', line 517 def help @parser.on_tail('-?', '--help', 'Show this message') do puts @parser exit end end |
#host ⇒ Object
483 484 485 486 487 488 |
# File 'lib/tcp_server/client.rb', line 483 def host description = "Connect to server at this host; default: #{@options[:host]}" @parser.on('-h', '--hostname=<hostname>', description) do |v| @options[:host] = v end end |
#log_level ⇒ Object
510 511 512 513 514 515 |
# File 'lib/tcp_server/client.rb', line 510 def log_level current_level = @options.fetch(:log_level, 0) @parser.on_tail('-v', '--verbose', 'Increase verbosity') do @options[:log_level] = current_level - 1 end end |
#parse_positional_arguments! ⇒ Object
531 532 533 534 535 536 |
# File 'lib/tcp_server/client.rb', line 531 def parse_positional_arguments! @options[:host] = ARGV.shift or raise OptionParser::MissingArgument, 'hostname' return if (given_port = ARGV.shift&.to_i).nil? @options[:port] = validated_port(given_port).to_i end |
#port ⇒ Object
497 498 499 500 501 502 |
# File 'lib/tcp_server/client.rb', line 497 def port description = "Connect to server at this port; default: #{@options[:port]}" @parser.on('-p', '--port=<port>', Integer, description) do |v| @options[:port] = validated_port(v).to_i end end |
#ssl ⇒ Object
504 505 506 507 508 |
# File 'lib/tcp_server/client.rb', line 504 def ssl @parser.on('--ssl', "Secure connection with TLSv1.3; default: #{@options[:ssl]}") do @options[:ssl] = true end end |
#validated_port(val, integer_pattern = /^\d+$/) ⇒ Object
490 491 492 493 494 495 |
# File 'lib/tcp_server/client.rb', line 490 def validated_port(val, integer_pattern = /^\d+$/) raise OptionParser::InvalidArgument, "Invalid port: #{val}" unless integer_pattern.match?(val.to_s) && val.positive? && val < 65_536 val end |
#version ⇒ Object
524 525 526 527 528 529 |
# File 'lib/tcp_server/client.rb', line 524 def version @parser.on_tail('--version', 'Show version') do puts "#{File.basename($PROGRAM_NAME)} version #{::Client::VERSION}" exit end end |