cli-option_parser.rb 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. checksums.yaml +7 -0
  2. data/.bundle/config +2 -0
  3. data/.document +7 -0
  4. data/.editorconfig +13 -0
  5. data/.github/dependabot.yml +6 -0
  6. data/.github/workflows/test.yml +26 -0
  7. data/.gitignore +13 -0
  8. data/.rdoc_options +4 -0
  9. data/COPYING +56 -0
  10. data/Gemfile +5 -0
  11. data/README.md +59 -0
  12. data/Rakefile +14 -0
  13. data/cli-option_parser.rb.gemspec +23 -0
  14. data/doc/optparse/.document +1 -0
  15. data/doc/optparse/argument_converters.rdoc +380 -0
  16. data/doc/optparse/creates_option.rdoc +7 -0
  17. data/doc/optparse/option_params.rdoc +509 -0
  18. data/doc/optparse/ruby/argument_abbreviation.rb +9 -0
  19. data/doc/optparse/ruby/argument_keywords.rb +6 -0
  20. data/doc/optparse/ruby/argument_strings.rb +6 -0
  21. data/doc/optparse/ruby/argv.rb +2 -0
  22. data/doc/optparse/ruby/array.rb +6 -0
  23. data/doc/optparse/ruby/basic.rb +17 -0
  24. data/doc/optparse/ruby/block.rb +9 -0
  25. data/doc/optparse/ruby/collected_options.rb +8 -0
  26. data/doc/optparse/ruby/custom_converter.rb +9 -0
  27. data/doc/optparse/ruby/date.rb +6 -0
  28. data/doc/optparse/ruby/datetime.rb +6 -0
  29. data/doc/optparse/ruby/decimal_integer.rb +7 -0
  30. data/doc/optparse/ruby/decimal_numeric.rb +7 -0
  31. data/doc/optparse/ruby/default_values.rb +8 -0
  32. data/doc/optparse/ruby/descriptions.rb +15 -0
  33. data/doc/optparse/ruby/explicit_array_values.rb +9 -0
  34. data/doc/optparse/ruby/explicit_hash_values.rb +9 -0
  35. data/doc/optparse/ruby/false_class.rb +6 -0
  36. data/doc/optparse/ruby/float.rb +6 -0
  37. data/doc/optparse/ruby/help.rb +18 -0
  38. data/doc/optparse/ruby/help_banner.rb +7 -0
  39. data/doc/optparse/ruby/help_format.rb +25 -0
  40. data/doc/optparse/ruby/help_program_name.rb +7 -0
  41. data/doc/optparse/ruby/integer.rb +6 -0
  42. data/doc/optparse/ruby/long_names.rb +9 -0
  43. data/doc/optparse/ruby/long_optional.rb +6 -0
  44. data/doc/optparse/ruby/long_required.rb +6 -0
  45. data/doc/optparse/ruby/long_simple.rb +9 -0
  46. data/doc/optparse/ruby/long_with_negation.rb +6 -0
  47. data/doc/optparse/ruby/match_converter.rb +9 -0
  48. data/doc/optparse/ruby/matched_values.rb +6 -0
  49. data/doc/optparse/ruby/method.rb +11 -0
  50. data/doc/optparse/ruby/missing_options.rb +12 -0
  51. data/doc/optparse/ruby/mixed_names.rb +12 -0
  52. data/doc/optparse/ruby/name_abbrev.rb +9 -0
  53. data/doc/optparse/ruby/no_abbreviation.rb +10 -0
  54. data/doc/optparse/ruby/numeric.rb +6 -0
  55. data/doc/optparse/ruby/object.rb +6 -0
  56. data/doc/optparse/ruby/octal_integer.rb +7 -0
  57. data/doc/optparse/ruby/optional_argument.rb +9 -0
  58. data/doc/optparse/ruby/parse.rb +13 -0
  59. data/doc/optparse/ruby/parse_bang.rb +13 -0
  60. data/doc/optparse/ruby/proc.rb +13 -0
  61. data/doc/optparse/ruby/regexp.rb +6 -0
  62. data/doc/optparse/ruby/required_argument.rb +9 -0
  63. data/doc/optparse/ruby/shellwords.rb +6 -0
  64. data/doc/optparse/ruby/short_names.rb +9 -0
  65. data/doc/optparse/ruby/short_optional.rb +6 -0
  66. data/doc/optparse/ruby/short_range.rb +6 -0
  67. data/doc/optparse/ruby/short_required.rb +6 -0
  68. data/doc/optparse/ruby/short_simple.rb +9 -0
  69. data/doc/optparse/ruby/string.rb +6 -0
  70. data/doc/optparse/ruby/terminator.rb +6 -0
  71. data/doc/optparse/ruby/time.rb +6 -0
  72. data/doc/optparse/ruby/true_class.rb +6 -0
  73. data/doc/optparse/ruby/uri.rb +6 -0
  74. data/doc/optparse/tutorial.rdoc +858 -0
  75. data/lib/cli/option_parser/ac.rb +52 -0
  76. data/lib/cli/option_parser/date.rb +16 -0
  77. data/lib/cli/option_parser/kwargs.rb +21 -0
  78. data/lib/cli/option_parser/shellwords.rb +4 -0
  79. data/lib/cli/option_parser/time.rb +9 -0
  80. data/lib/cli/option_parser/uri.rb +4 -0
  81. data/lib/cli/option_parser/version.rb +71 -0
  82. data/lib/cli/option_parser.rb +2353 -0
  83. data/lib/cli-option_parser.rb +1 -0
  84. data/misc/rb_optparse.bash +21 -0
  85. data/misc/rb_optparse.zsh +39 -0
  86. data/rakelib/.document +0 -0
  87. data/rakelib/changelogs.rake +34 -0
  88. data/rakelib/epoch.rake +5 -0
  89. data/rakelib/version.rake +51 -0
  90. data/test/lib/helper.rb +4 -0
  91. data/test/optparse/test_acceptable.rb +198 -0
  92. data/test/optparse/test_autoconf.rb +69 -0
  93. data/test/optparse/test_bash_completion.rb +46 -0
  94. data/test/optparse/test_cclass.rb +18 -0
  95. data/test/optparse/test_did_you_mean.rb +48 -0
  96. data/test/optparse/test_getopts.rb +49 -0
  97. data/test/optparse/test_kwargs.rb +38 -0
  98. data/test/optparse/test_load.rb +141 -0
  99. data/test/optparse/test_noarg.rb +79 -0
  100. data/test/optparse/test_optarg.rb +60 -0
  101. data/test/optparse/test_optparse.rb +127 -0
  102. data/test/optparse/test_placearg.rb +76 -0
  103. data/test/optparse/test_reqarg.rb +95 -0
  104. data/test/optparse/test_summary.rb +81 -0
  105. data/test/optparse/test_zsh_completion.rb +21 -0
  106. metadata +154 -0
@@ -0,0 +1,18 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on(
4
+ '-x', '--xxx',
5
+ 'Adipiscing elit. Aenean commodo ligula eget.',
6
+ 'Aenean massa. Cum sociis natoque penatibus',
7
+ )
8
+ parser.on(
9
+ '-y', '--yyy YYY',
10
+ 'Lorem ipsum dolor sit amet, consectetuer.'
11
+ )
12
+ parser.on(
13
+ '-z', '--zzz [ZZZ]',
14
+ 'Et magnis dis parturient montes, nascetur',
15
+ 'ridiculus mus. Donec quam felis, ultricies',
16
+ 'nec, pellentesque eu, pretium quis, sem.',
17
+ )
18
+ parser.parse!
@@ -0,0 +1,7 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.banner = "Usage: ruby help_banner.rb"
4
+ parser.parse!
5
+
6
+
7
+
@@ -0,0 +1,25 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new(
3
+ 'ruby help_format.rb [options]', # Banner
4
+ 20, # Width of options field
5
+ ' ' * 2 # Indentation
6
+ )
7
+ parser.on(
8
+ '-x', '--xxx',
9
+ 'Adipiscing elit. Aenean commodo ligula eget.',
10
+ 'Aenean massa. Cum sociis natoque penatibus',
11
+ )
12
+ parser.on(
13
+ '-y', '--yyy YYY',
14
+ 'Lorem ipsum dolor sit amet, consectetuer.'
15
+ )
16
+ parser.on(
17
+ '-z', '--zzz [ZZZ]',
18
+ 'Et magnis dis parturient montes, nascetur',
19
+ 'ridiculus mus. Donec quam felis, ultricies',
20
+ 'nec, pellentesque eu, pretium quis, sem.',
21
+ )
22
+ parser.parse!
23
+
24
+
25
+
@@ -0,0 +1,7 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.program_name = 'help_program_name.rb'
4
+ parser.parse!
5
+
6
+
7
+
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--integer=INTEGER', Integer) do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,9 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--xxx', 'Long name') do |value|
4
+ p ['-xxx', value]
5
+ end
6
+ parser.on('--y1%', '--z2#', "Two long names") do |value|
7
+ p ['--y1% or --z2#', value]
8
+ end
9
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--xxx [XXX]', 'Long name with optional argument') do |value|
4
+ p ['--xxx', value]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--xxx XXX', 'Long name with required argument') do |value|
4
+ p ['--xxx', value]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,9 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--xxx', 'One long name') do |value|
4
+ p ['--xxx', value]
5
+ end
6
+ parser.on('--y1%', '--z2#', 'Two long names (aliases)') do |value|
7
+ p ['--y1% or --z2#', value]
8
+ end
9
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--[no-]binary', 'Long name with negation') do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,9 @@
1
+ require 'optparse/date'
2
+ parser = OptionParser.new
3
+ parser.accept(:capitalize, /\w*/) do |value|
4
+ value.capitalize
5
+ end
6
+ parser.on('--capitalize XXX', :capitalize) do |value|
7
+ p [value, value.class]
8
+ end
9
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--xxx XXX', /foo/i, 'Matched values') do |value|
4
+ p ['--xxx', value]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,11 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ def xxx_handler(value)
4
+ p ['Handler method for -xxx called with value:', value]
5
+ end
6
+ parser.on('--xxx', 'Option with no argument', method(:xxx_handler))
7
+ def yyy_handler(value)
8
+ p ['Handler method for -yyy called with value:', value]
9
+ end
10
+ parser.on('--yyy YYY', 'Option with required argument', method(:yyy_handler))
11
+ parser.parse!
@@ -0,0 +1,12 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-x', '--xxx', 'Short and long, no argument')
4
+ parser.on('-yYYY', '--yyy', 'Short and long, required argument')
5
+ parser.on('-z [ZZZ]', '--zzz', 'Short and long, optional argument')
6
+ options = {}
7
+ parser.parse!(into: options)
8
+ required_options = [:xxx, :zzz]
9
+ missing_options = required_options - options.keys
10
+ unless missing_options.empty?
11
+ fail "Missing required options: #{missing_options}"
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-x', '--xxx', 'Short and long, no argument') do |value|
4
+ p ['--xxx', value]
5
+ end
6
+ parser.on('-yYYY', '--yyy', 'Short and long, required argument') do |value|
7
+ p ['--yyy', value]
8
+ end
9
+ parser.on('-z [ZZZ]', '--zzz', 'Short and long, optional argument') do |value|
10
+ p ['--zzz', value]
11
+ end
12
+ parser.parse!
@@ -0,0 +1,9 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-n', '--dry-run',) do |value|
4
+ p ['--dry-run', value]
5
+ end
6
+ parser.on('-d', '--draft',) do |value|
7
+ p ['--draft', value]
8
+ end
9
+ parser.parse!
@@ -0,0 +1,10 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-n', '--dry-run',) do |value|
4
+ p ['--dry-run', value]
5
+ end
6
+ parser.on('-d', '--draft',) do |value|
7
+ p ['--draft', value]
8
+ end
9
+ parser.require_exact = true
10
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--numeric=NUMERIC', Numeric) do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--object=OBJECT', Object) do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,7 @@
1
+ require 'optparse'
2
+ include OptionParser::Acceptables
3
+ parser = OptionParser.new
4
+ parser.on('--octal_integer=OCTAL_INTEGER', OctalInteger) do |value|
5
+ p [value, value.class]
6
+ end
7
+ parser.parse!
@@ -0,0 +1,9 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-x [XXX]', '--xxx', 'Optional argument via short name') do |value|
4
+ p ['--xxx', value]
5
+ end
6
+ parser.on('-y', '--yyy [YYY]', 'Optional argument via long name') do |value|
7
+ p ['--yyy', value]
8
+ end
9
+ parser.parse!
@@ -0,0 +1,13 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--xxx') do |value|
4
+ p ['--xxx', value]
5
+ end
6
+ parser.on('--yyy YYY') do |value|
7
+ p ['--yyy', value]
8
+ end
9
+ parser.on('--zzz [ZZZ]') do |value|
10
+ p ['--zzz', value]
11
+ end
12
+ ret = parser.parse(ARGV)
13
+ puts "Returned: #{ret} (#{ret.class})"
@@ -0,0 +1,13 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--xxx') do |value|
4
+ p ['--xxx', value]
5
+ end
6
+ parser.on('--yyy YYY') do |value|
7
+ p ['--yyy', value]
8
+ end
9
+ parser.on('--zzz [ZZZ]') do |value|
10
+ p ['--zzz', value]
11
+ end
12
+ ret = parser.parse!
13
+ puts "Returned: #{ret} (#{ret.class})"
@@ -0,0 +1,13 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on(
4
+ '--xxx',
5
+ 'Option with no argument',
6
+ ->(value) {p ['Handler proc for -xxx called with value:', value]}
7
+ )
8
+ parser.on(
9
+ '--yyy YYY',
10
+ 'Option with required argument',
11
+ ->(value) {p ['Handler proc for -yyy called with value:', value]}
12
+ )
13
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--regexp=REGEXP', Regexp) do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,9 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-x XXX', '--xxx', 'Required argument via short name') do |value|
4
+ p ['--xxx', value]
5
+ end
6
+ parser.on('-y', '--y YYY', 'Required argument via long name') do |value|
7
+ p ['--yyy', value]
8
+ end
9
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse/shellwords'
2
+ parser = OptionParser.new
3
+ parser.on('--shellwords=SHELLWORDS', Shellwords) do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,9 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-x', 'Short name') do |value|
4
+ p ['x', value]
5
+ end
6
+ parser.on('-1', '-%', 'Two short names') do |value|
7
+ p ['-1 or -%', value]
8
+ end
9
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-x [XXX]', 'Short name with optional argument') do |value|
4
+ p ['-x', value]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-[!-~]', 'Short names in (very large) range') do |name, value|
4
+ p ['!-~', name, value]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-xXXX', 'Short name with required argument') do |value|
4
+ p ['-x', value]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,9 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('-x', 'One short name') do |value|
4
+ p ['-x', value]
5
+ end
6
+ parser.on('-1', '-%', 'Two short names (aliases)') do |value|
7
+ p ['-1 or -%', value]
8
+ end
9
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--string=STRING', String) do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--my_option XXX') do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse/time'
2
+ parser = OptionParser.new
3
+ parser.on('--time=TIME', Time) do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse'
2
+ parser = OptionParser.new
3
+ parser.on('--true_class=TRUE_CLASS', TrueClass) do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!
@@ -0,0 +1,6 @@
1
+ require 'optparse/uri'
2
+ parser = OptionParser.new
3
+ parser.on('--uri=URI', URI) do |value|
4
+ p [value, value.class]
5
+ end
6
+ parser.parse!