optparse 0.1.1 → 0.3.0

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +277 -0
  3. data/doc/optparse/argument_converters.rdoc +380 -0
  4. data/doc/optparse/creates_option.rdoc +7 -0
  5. data/doc/optparse/option_params.rdoc +509 -0
  6. data/doc/optparse/ruby/argument_keywords.rb +6 -0
  7. data/doc/optparse/ruby/argument_strings.rb +6 -0
  8. data/doc/optparse/ruby/argv.rb +2 -0
  9. data/doc/optparse/ruby/array.rb +6 -0
  10. data/doc/optparse/ruby/basic.rb +17 -0
  11. data/doc/optparse/ruby/block.rb +9 -0
  12. data/doc/optparse/ruby/collected_options.rb +8 -0
  13. data/doc/optparse/ruby/custom_converter.rb +9 -0
  14. data/doc/optparse/ruby/date.rb +6 -0
  15. data/doc/optparse/ruby/datetime.rb +6 -0
  16. data/doc/optparse/ruby/decimal_integer.rb +7 -0
  17. data/doc/optparse/ruby/decimal_numeric.rb +7 -0
  18. data/doc/optparse/ruby/default_values.rb +8 -0
  19. data/doc/optparse/ruby/descriptions.rb +15 -0
  20. data/doc/optparse/ruby/explicit_array_values.rb +9 -0
  21. data/doc/optparse/ruby/explicit_hash_values.rb +9 -0
  22. data/doc/optparse/ruby/false_class.rb +6 -0
  23. data/doc/optparse/ruby/float.rb +6 -0
  24. data/doc/optparse/ruby/help.rb +18 -0
  25. data/doc/optparse/ruby/help_banner.rb +7 -0
  26. data/doc/optparse/ruby/help_format.rb +25 -0
  27. data/doc/optparse/ruby/help_program_name.rb +7 -0
  28. data/doc/optparse/ruby/integer.rb +6 -0
  29. data/doc/optparse/ruby/long_names.rb +9 -0
  30. data/doc/optparse/ruby/long_optional.rb +6 -0
  31. data/doc/optparse/ruby/long_required.rb +6 -0
  32. data/doc/optparse/ruby/long_simple.rb +9 -0
  33. data/doc/optparse/ruby/long_with_negation.rb +6 -0
  34. data/doc/optparse/ruby/match_converter.rb +9 -0
  35. data/doc/optparse/ruby/matched_values.rb +6 -0
  36. data/doc/optparse/ruby/method.rb +11 -0
  37. data/doc/optparse/ruby/missing_options.rb +12 -0
  38. data/doc/optparse/ruby/mixed_names.rb +12 -0
  39. data/doc/optparse/ruby/name_abbrev.rb +9 -0
  40. data/doc/optparse/ruby/no_abbreviation.rb +10 -0
  41. data/doc/optparse/ruby/numeric.rb +6 -0
  42. data/doc/optparse/ruby/object.rb +6 -0
  43. data/doc/optparse/ruby/octal_integer.rb +7 -0
  44. data/doc/optparse/ruby/optional_argument.rb +9 -0
  45. data/doc/optparse/ruby/parse.rb +13 -0
  46. data/doc/optparse/ruby/parse_bang.rb +13 -0
  47. data/doc/optparse/ruby/proc.rb +13 -0
  48. data/doc/optparse/ruby/regexp.rb +6 -0
  49. data/doc/optparse/ruby/required_argument.rb +9 -0
  50. data/doc/optparse/ruby/shellwords.rb +6 -0
  51. data/doc/optparse/ruby/short_names.rb +9 -0
  52. data/doc/optparse/ruby/short_optional.rb +6 -0
  53. data/doc/optparse/ruby/short_range.rb +6 -0
  54. data/doc/optparse/ruby/short_required.rb +6 -0
  55. data/doc/optparse/ruby/short_simple.rb +9 -0
  56. data/doc/optparse/ruby/string.rb +6 -0
  57. data/doc/optparse/ruby/terminator.rb +6 -0
  58. data/doc/optparse/ruby/time.rb +6 -0
  59. data/doc/optparse/ruby/true_class.rb +6 -0
  60. data/doc/optparse/ruby/uri.rb +6 -0
  61. data/doc/optparse/tutorial.rdoc +835 -0
  62. data/lib/optparse/ac.rb +1 -1
  63. data/lib/optparse/date.rb +1 -1
  64. data/lib/optparse/kwargs.rb +3 -1
  65. data/lib/optparse/shellwords.rb +1 -1
  66. data/lib/optparse/time.rb +1 -1
  67. data/lib/optparse/uri.rb +1 -1
  68. data/lib/optparse.rb +124 -83
  69. metadata +67 -9
  70. data/Rakefile +0 -10
  71. data/optparse.gemspec +0 -33
  72. data/rakelib/changelogs.rake +0 -34
  73. data/rakelib/epoch.rake +0 -5
  74. data/rakelib/version.rake +0 -47
data/lib/optparse/ac.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: false
2
- require 'optparse'
2
+ require_relative '../optparse'
3
3
 
4
4
  class OptionParser::AC < OptionParser
5
5
  private
data/lib/optparse/date.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: false
2
- require 'optparse'
2
+ require_relative '../optparse'
3
3
  require 'date'
4
4
 
5
5
  OptionParser.accept(DateTime) do |s,|
@@ -1,10 +1,12 @@
1
1
  # frozen_string_literal: true
2
- require 'optparse'
2
+ require_relative '../optparse'
3
3
 
4
4
  class OptionParser
5
5
  # :call-seq:
6
6
  # define_by_keywords(options, method, **params)
7
7
  #
8
+ # :include: ../../doc/optparse/creates_option.rdoc
9
+ #
8
10
  def define_by_keywords(options, meth, **opts)
9
11
  meth.parameters.each do |type, name|
10
12
  case type
@@ -2,6 +2,6 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'shellwords'
5
- require 'optparse'
5
+ require_relative '../optparse'
6
6
 
7
7
  OptionParser.accept(Shellwords) {|s,| Shellwords.shellwords(s)}
data/lib/optparse/time.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: false
2
- require 'optparse'
2
+ require_relative '../optparse'
3
3
  require 'time'
4
4
 
5
5
  OptionParser.accept(Time) do |s,|
data/lib/optparse/uri.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
  # -*- ruby -*-
3
3
 
4
- require 'optparse'
4
+ require_relative '../optparse'
5
5
  require 'uri'
6
6
 
7
7
  OptionParser.accept(URI) {|s,| URI.parse(s) if s}
data/lib/optparse.rb CHANGED
@@ -48,6 +48,10 @@
48
48
  #
49
49
  # == OptionParser
50
50
  #
51
+ # === New to \OptionParser?
52
+ #
53
+ # See the {Tutorial}[optparse/tutorial.rdoc].
54
+ #
51
55
  # === Introduction
52
56
  #
53
57
  # OptionParser is a class for command-line option analysis. It is much more
@@ -240,14 +244,14 @@
240
244
  #
241
245
  # require 'optparse'
242
246
  #
243
- # params = {}
247
+ # options = {}
244
248
  # OptionParser.new do |parser|
245
249
  # parser.on('-a')
246
250
  # parser.on('-b NUM', Integer)
247
251
  # parser.on('-v', '--verbose')
248
- # end.parse!(into: params)
252
+ # end.parse!(into: options)
249
253
  #
250
- # p params
254
+ # p options
251
255
  #
252
256
  # Used:
253
257
  #
@@ -415,11 +419,13 @@
415
419
  #
416
420
  # === Further documentation
417
421
  #
418
- # The above examples should be enough to learn how to use this class. If you
419
- # have any questions, file a ticket at http://bugs.ruby-lang.org.
422
+ # The above examples, along with the accompanying
423
+ # {Tutorial}[optparse/tutorial.rdoc],
424
+ # should be enough to learn how to use this class.
425
+ # If you have any questions, file a ticket at http://bugs.ruby-lang.org.
420
426
  #
421
427
  class OptionParser
422
- OptionParser::Version = "0.1.1"
428
+ OptionParser::Version = "0.3.0"
423
429
 
424
430
  # :stopdoc:
425
431
  NoArgument = [NO_ARGUMENT = :NONE, nil].freeze
@@ -547,7 +553,7 @@ class OptionParser
547
553
  # Parses +arg+ and returns rest of +arg+ and matched portion to the
548
554
  # argument pattern. Yields when the pattern doesn't match substring.
549
555
  #
550
- def parse_arg(arg)
556
+ def parse_arg(arg) # :nodoc:
551
557
  pattern or return nil, [arg]
552
558
  unless m = pattern.match(arg)
553
559
  yield(InvalidArgument, arg)
@@ -572,7 +578,7 @@ class OptionParser
572
578
  # conversion. Yields at semi-error condition instead of raising an
573
579
  # exception.
574
580
  #
575
- def conv_arg(arg, val = [])
581
+ def conv_arg(arg, val = []) # :nodoc:
576
582
  if conv
577
583
  val = conv.call(*val)
578
584
  else
@@ -668,6 +674,29 @@ class OptionParser
668
674
  end
669
675
  end
670
676
 
677
+ def pretty_print_contents(q) # :nodoc:
678
+ if @block
679
+ q.text ":" + @block.source_location.join(":") + ":"
680
+ first = false
681
+ else
682
+ first = true
683
+ end
684
+ [@short, @long].each do |list|
685
+ list.each do |opt|
686
+ if first
687
+ q.text ":"
688
+ first = false
689
+ end
690
+ q.breakable
691
+ q.text opt
692
+ end
693
+ end
694
+ end
695
+
696
+ def pretty_print(q) # :nodoc:
697
+ q.object_group(self) {pretty_print_contents(q)}
698
+ end
699
+
671
700
  #
672
701
  # Switch that takes no arguments.
673
702
  #
@@ -687,6 +716,10 @@ class OptionParser
687
716
  def self.pattern
688
717
  Object
689
718
  end
719
+
720
+ def pretty_head # :nodoc:
721
+ "NoArgument"
722
+ end
690
723
  end
691
724
 
692
725
  #
@@ -704,6 +737,10 @@ class OptionParser
704
737
  end
705
738
  conv_arg(*parse_arg(arg, &method(:raise)))
706
739
  end
740
+
741
+ def pretty_head # :nodoc:
742
+ "Required"
743
+ end
707
744
  end
708
745
 
709
746
  #
@@ -721,18 +758,22 @@ class OptionParser
721
758
  conv_arg(arg)
722
759
  end
723
760
  end
761
+
762
+ def pretty_head # :nodoc:
763
+ "Optional"
764
+ end
724
765
  end
725
766
 
726
767
  #
727
- # Switch that takes an argument, which does not begin with '-'.
768
+ # Switch that takes an argument, which does not begin with '-' or is '-'.
728
769
  #
729
770
  class PlacedArgument < self
730
771
 
731
772
  #
732
- # Returns nil if argument is not present or begins with '-'.
773
+ # Returns nil if argument is not present or begins with '-' and is not '-'.
733
774
  #
734
775
  def parse(arg, argv, &error)
735
- if !(val = arg) and (argv.empty? or /\A-/ =~ (val = argv[0]))
776
+ if !(val = arg) and (argv.empty? or /\A-./ =~ (val = argv[0]))
736
777
  return nil, block, nil
737
778
  end
738
779
  opt = (val = parse_arg(val, &error))[1]
@@ -744,6 +785,10 @@ class OptionParser
744
785
  end
745
786
  val
746
787
  end
788
+
789
+ def pretty_head # :nodoc:
790
+ "Placed"
791
+ end
747
792
  end
748
793
  end
749
794
 
@@ -775,6 +820,17 @@ class OptionParser
775
820
  @list = []
776
821
  end
777
822
 
823
+ def pretty_print(q) # :nodoc:
824
+ q.group(1, "(", ")") do
825
+ @list.each do |sw|
826
+ next unless Switch === sw
827
+ q.group(1, "(" + sw.pretty_head, ")") do
828
+ sw.pretty_print_contents(q)
829
+ end
830
+ end
831
+ end
832
+ end
833
+
778
834
  #
779
835
  # See OptionParser.accept.
780
836
  #
@@ -806,7 +862,7 @@ class OptionParser
806
862
  # +lopts+:: Long style option list.
807
863
  # +nlopts+:: Negated long style options list.
808
864
  #
809
- def update(sw, sopts, lopts, nsw = nil, nlopts = nil)
865
+ def update(sw, sopts, lopts, nsw = nil, nlopts = nil) # :nodoc:
810
866
  sopts.each {|o| @short[o] = sw} if sopts
811
867
  lopts.each {|o| @long[o] = sw} if lopts
812
868
  nlopts.each {|o| @long[o] = nsw} if nsw and nlopts
@@ -1092,6 +1148,7 @@ XXX
1092
1148
  @summary_indent = indent
1093
1149
  @default_argv = ARGV
1094
1150
  @require_exact = false
1151
+ @raise_unknown = true
1095
1152
  add_officious
1096
1153
  yield self if block_given?
1097
1154
  end
@@ -1169,6 +1226,9 @@ XXX
1169
1226
  # abbreviated long option as short option).
1170
1227
  attr_accessor :require_exact
1171
1228
 
1229
+ # Whether to raise at unknown option.
1230
+ attr_accessor :raise_unknown
1231
+
1172
1232
  #
1173
1233
  # Heading banner preceding summary.
1174
1234
  #
@@ -1287,6 +1347,29 @@ XXX
1287
1347
  def help; summarize("#{banner}".sub(/\n?\z/, "\n")) end
1288
1348
  alias to_s help
1289
1349
 
1350
+ def pretty_print(q) # :nodoc:
1351
+ q.object_group(self) do
1352
+ first = true
1353
+ if @stack.size > 2
1354
+ @stack.each_with_index do |s, i|
1355
+ next if i < 2
1356
+ next if s.list.empty?
1357
+ if first
1358
+ first = false
1359
+ q.text ":"
1360
+ end
1361
+ q.breakable
1362
+ s.pretty_print(q)
1363
+ end
1364
+ end
1365
+ end
1366
+ end
1367
+
1368
+ def inspect # :nodoc:
1369
+ require 'pp'
1370
+ pretty_print_inspect
1371
+ end
1372
+
1290
1373
  #
1291
1374
  # Returns option summary list.
1292
1375
  #
@@ -1300,7 +1383,7 @@ XXX
1300
1383
  # +prv+:: Previously specified argument.
1301
1384
  # +msg+:: Exception message.
1302
1385
  #
1303
- def notwice(obj, prv, msg)
1386
+ def notwice(obj, prv, msg) # :nodoc:
1304
1387
  unless !prv or prv == obj
1305
1388
  raise(ArgumentError, "argument #{msg} given twice: #{obj}",
1306
1389
  ParseError.filter_backtrace(caller(2)))
@@ -1314,64 +1397,7 @@ XXX
1314
1397
  # :call-seq:
1315
1398
  # make_switch(params, block = nil)
1316
1399
  #
1317
- # Creates an OptionParser::Switch from the parameters. The parsed argument
1318
- # value is passed to the given block, where it can be processed.
1319
- #
1320
- # See at the beginning of OptionParser for some full examples.
1321
- #
1322
- # +params+ can include the following elements:
1323
- #
1324
- # [Argument style:]
1325
- # One of the following:
1326
- # :NONE, :REQUIRED, :OPTIONAL
1327
- #
1328
- # [Argument pattern:]
1329
- # Acceptable option argument format, must be pre-defined with
1330
- # OptionParser.accept or OptionParser#accept, or Regexp. This can appear
1331
- # once or assigned as String if not present, otherwise causes an
1332
- # ArgumentError. Examples:
1333
- # Float, Time, Array
1334
- #
1335
- # [Possible argument values:]
1336
- # Hash or Array.
1337
- # [:text, :binary, :auto]
1338
- # %w[iso-2022-jp shift_jis euc-jp utf8 binary]
1339
- # { "jis" => "iso-2022-jp", "sjis" => "shift_jis" }
1340
- #
1341
- # [Long style switch:]
1342
- # Specifies a long style switch which takes a mandatory, optional or no
1343
- # argument. It's a string of the following form:
1344
- # "--switch=MANDATORY" or "--switch MANDATORY"
1345
- # "--switch[=OPTIONAL]"
1346
- # "--switch"
1347
- #
1348
- # [Short style switch:]
1349
- # Specifies short style switch which takes a mandatory, optional or no
1350
- # argument. It's a string of the following form:
1351
- # "-xMANDATORY"
1352
- # "-x[OPTIONAL]"
1353
- # "-x"
1354
- # There is also a special form which matches character range (not full
1355
- # set of regular expression):
1356
- # "-[a-z]MANDATORY"
1357
- # "-[a-z][OPTIONAL]"
1358
- # "-[a-z]"
1359
- #
1360
- # [Argument style and description:]
1361
- # Instead of specifying mandatory or optional arguments directly in the
1362
- # switch parameter, this separate parameter can be used.
1363
- # "=MANDATORY"
1364
- # "=[OPTIONAL]"
1365
- #
1366
- # [Description:]
1367
- # Description string for the option.
1368
- # "Run verbosely"
1369
- # If you give multiple description strings, each string will be printed
1370
- # line by line.
1371
- #
1372
- # [Handler:]
1373
- # Handler for the parsed argument value. Either give a block or pass a
1374
- # Proc or Method as an argument.
1400
+ # :include: ../doc/optparse/creates_option.rdoc
1375
1401
  #
1376
1402
  def make_switch(opts, block = nil)
1377
1403
  short, long, nolong, style, pattern, conv, not_pattern, not_conv, not_style = [], [], []
@@ -1480,7 +1506,7 @@ XXX
1480
1506
  style = notwice(default_style.guess(arg = o), style, 'style')
1481
1507
  default_pattern, conv = search(:atype, Object) unless default_pattern
1482
1508
  else
1483
- desc.push(o)
1509
+ desc.push(o) if o && !o.empty?
1484
1510
  end
1485
1511
  end
1486
1512
 
@@ -1509,6 +1535,8 @@ XXX
1509
1535
  # :call-seq:
1510
1536
  # define(*params, &block)
1511
1537
  #
1538
+ # :include: ../doc/optparse/creates_option.rdoc
1539
+ #
1512
1540
  def define(*opts, &block)
1513
1541
  top.append(*(sw = make_switch(opts, block)))
1514
1542
  sw[0]
@@ -1517,8 +1545,7 @@ XXX
1517
1545
  # :call-seq:
1518
1546
  # on(*params, &block)
1519
1547
  #
1520
- # Add option switch and handler. See #make_switch for an explanation of
1521
- # parameters.
1548
+ # :include: ../doc/optparse/creates_option.rdoc
1522
1549
  #
1523
1550
  def on(*opts, &block)
1524
1551
  define(*opts, &block)
@@ -1529,6 +1556,8 @@ XXX
1529
1556
  # :call-seq:
1530
1557
  # define_head(*params, &block)
1531
1558
  #
1559
+ # :include: ../doc/optparse/creates_option.rdoc
1560
+ #
1532
1561
  def define_head(*opts, &block)
1533
1562
  top.prepend(*(sw = make_switch(opts, block)))
1534
1563
  sw[0]
@@ -1537,7 +1566,9 @@ XXX
1537
1566
  # :call-seq:
1538
1567
  # on_head(*params, &block)
1539
1568
  #
1540
- # Add option switch like with #on, but at head of summary.
1569
+ # :include: ../doc/optparse/creates_option.rdoc
1570
+ #
1571
+ # The new option is added at the head of the summary.
1541
1572
  #
1542
1573
  def on_head(*opts, &block)
1543
1574
  define_head(*opts, &block)
@@ -1548,6 +1579,8 @@ XXX
1548
1579
  # :call-seq:
1549
1580
  # define_tail(*params, &block)
1550
1581
  #
1582
+ # :include: ../doc/optparse/creates_option.rdoc
1583
+ #
1551
1584
  def define_tail(*opts, &block)
1552
1585
  base.append(*(sw = make_switch(opts, block)))
1553
1586
  sw[0]
@@ -1557,7 +1590,9 @@ XXX
1557
1590
  # :call-seq:
1558
1591
  # on_tail(*params, &block)
1559
1592
  #
1560
- # Add option switch like with #on, but at tail of summary.
1593
+ # :include: ../doc/optparse/creates_option.rdoc
1594
+ #
1595
+ # The new option is added at the tail of the summary.
1561
1596
  #
1562
1597
  def on_tail(*opts, &block)
1563
1598
  define_tail(*opts, &block)
@@ -1608,9 +1643,11 @@ XXX
1608
1643
  begin
1609
1644
  sw, = complete(:long, opt, true)
1610
1645
  if require_exact && !sw.long.include?(arg)
1646
+ throw :terminate, arg unless raise_unknown
1611
1647
  raise InvalidOption, arg
1612
1648
  end
1613
1649
  rescue ParseError
1650
+ throw :terminate, arg unless raise_unknown
1614
1651
  raise $!.set_option(arg, true)
1615
1652
  end
1616
1653
  begin
@@ -1642,6 +1679,7 @@ XXX
1642
1679
  end
1643
1680
  end
1644
1681
  rescue ParseError
1682
+ throw :terminate, arg unless raise_unknown
1645
1683
  raise $!.set_option(arg, true)
1646
1684
  end
1647
1685
  begin
@@ -1780,7 +1818,7 @@ XXX
1780
1818
  # Traverses @stack, sending each element method +id+ with +args+ and
1781
1819
  # +block+.
1782
1820
  #
1783
- def visit(id, *args, &block)
1821
+ def visit(id, *args, &block) # :nodoc:
1784
1822
  @stack.reverse_each do |el|
1785
1823
  el.__send__(id, *args, &block)
1786
1824
  end
@@ -1791,7 +1829,7 @@ XXX
1791
1829
  #
1792
1830
  # Searches +key+ in @stack for +id+ hash and returns or yields the result.
1793
1831
  #
1794
- def search(id, key)
1832
+ def search(id, key) # :nodoc:
1795
1833
  block_given = block_given?
1796
1834
  visit(:search, id, key) do |k|
1797
1835
  return block_given ? yield(k) : k
@@ -1808,7 +1846,7 @@ XXX
1808
1846
  # +icase+:: Search case insensitive if true.
1809
1847
  # +pat+:: Optional pattern for completion.
1810
1848
  #
1811
- def complete(typ, opt, icase = false, *pat)
1849
+ def complete(typ, opt, icase = false, *pat) # :nodoc:
1812
1850
  if pat.empty?
1813
1851
  search(typ, opt) {|sw| return [sw, opt]} # exact match or...
1814
1852
  end
@@ -1872,10 +1910,13 @@ XXX
1872
1910
  # directory ~/.options, then the basename with '.options' suffix
1873
1911
  # under XDG and Haiku standard places.
1874
1912
  #
1875
- def load(filename = nil)
1913
+ # The optional +into+ keyword argument works exactly like that accepted in
1914
+ # method #parse.
1915
+ #
1916
+ def load(filename = nil, into: nil)
1876
1917
  unless filename
1877
1918
  basename = File.basename($0, '.*')
1878
- return true if load(File.expand_path(basename, '~/.options')) rescue nil
1919
+ return true if load(File.expand_path(basename, '~/.options'), into: into) rescue nil
1879
1920
  basename << ".options"
1880
1921
  return [
1881
1922
  # XDG
@@ -1887,11 +1928,11 @@ XXX
1887
1928
  '~/config/settings',
1888
1929
  ].any? {|dir|
1889
1930
  next if !dir or dir.empty?
1890
- load(File.expand_path(basename, dir)) rescue nil
1931
+ load(File.expand_path(basename, dir), into: into) rescue nil
1891
1932
  }
1892
1933
  end
1893
1934
  begin
1894
- parse(*IO.readlines(filename).each {|s| s.chomp!})
1935
+ parse(*File.readlines(filename, chomp: true), into: into)
1895
1936
  true
1896
1937
  rescue Errno::ENOENT, Errno::ENOTDIR
1897
1938
  false
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optparse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nobu Nakada
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-29 00:00:00.000000000 Z
11
+ date: 2022-12-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: OptionParser is a class for command-line option analysis.
14
14
  email:
@@ -18,8 +18,67 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - COPYING
21
+ - ChangeLog
21
22
  - README.md
22
- - Rakefile
23
+ - doc/optparse/argument_converters.rdoc
24
+ - doc/optparse/creates_option.rdoc
25
+ - doc/optparse/option_params.rdoc
26
+ - doc/optparse/ruby/argument_keywords.rb
27
+ - doc/optparse/ruby/argument_strings.rb
28
+ - doc/optparse/ruby/argv.rb
29
+ - doc/optparse/ruby/array.rb
30
+ - doc/optparse/ruby/basic.rb
31
+ - doc/optparse/ruby/block.rb
32
+ - doc/optparse/ruby/collected_options.rb
33
+ - doc/optparse/ruby/custom_converter.rb
34
+ - doc/optparse/ruby/date.rb
35
+ - doc/optparse/ruby/datetime.rb
36
+ - doc/optparse/ruby/decimal_integer.rb
37
+ - doc/optparse/ruby/decimal_numeric.rb
38
+ - doc/optparse/ruby/default_values.rb
39
+ - doc/optparse/ruby/descriptions.rb
40
+ - doc/optparse/ruby/explicit_array_values.rb
41
+ - doc/optparse/ruby/explicit_hash_values.rb
42
+ - doc/optparse/ruby/false_class.rb
43
+ - doc/optparse/ruby/float.rb
44
+ - doc/optparse/ruby/help.rb
45
+ - doc/optparse/ruby/help_banner.rb
46
+ - doc/optparse/ruby/help_format.rb
47
+ - doc/optparse/ruby/help_program_name.rb
48
+ - doc/optparse/ruby/integer.rb
49
+ - doc/optparse/ruby/long_names.rb
50
+ - doc/optparse/ruby/long_optional.rb
51
+ - doc/optparse/ruby/long_required.rb
52
+ - doc/optparse/ruby/long_simple.rb
53
+ - doc/optparse/ruby/long_with_negation.rb
54
+ - doc/optparse/ruby/match_converter.rb
55
+ - doc/optparse/ruby/matched_values.rb
56
+ - doc/optparse/ruby/method.rb
57
+ - doc/optparse/ruby/missing_options.rb
58
+ - doc/optparse/ruby/mixed_names.rb
59
+ - doc/optparse/ruby/name_abbrev.rb
60
+ - doc/optparse/ruby/no_abbreviation.rb
61
+ - doc/optparse/ruby/numeric.rb
62
+ - doc/optparse/ruby/object.rb
63
+ - doc/optparse/ruby/octal_integer.rb
64
+ - doc/optparse/ruby/optional_argument.rb
65
+ - doc/optparse/ruby/parse.rb
66
+ - doc/optparse/ruby/parse_bang.rb
67
+ - doc/optparse/ruby/proc.rb
68
+ - doc/optparse/ruby/regexp.rb
69
+ - doc/optparse/ruby/required_argument.rb
70
+ - doc/optparse/ruby/shellwords.rb
71
+ - doc/optparse/ruby/short_names.rb
72
+ - doc/optparse/ruby/short_optional.rb
73
+ - doc/optparse/ruby/short_range.rb
74
+ - doc/optparse/ruby/short_required.rb
75
+ - doc/optparse/ruby/short_simple.rb
76
+ - doc/optparse/ruby/string.rb
77
+ - doc/optparse/ruby/terminator.rb
78
+ - doc/optparse/ruby/time.rb
79
+ - doc/optparse/ruby/true_class.rb
80
+ - doc/optparse/ruby/uri.rb
81
+ - doc/optparse/tutorial.rdoc
23
82
  - lib/optionparser.rb
24
83
  - lib/optparse.rb
25
84
  - lib/optparse/ac.rb
@@ -31,10 +90,6 @@ files:
31
90
  - lib/optparse/version.rb
32
91
  - misc/rb_optparse.bash
33
92
  - misc/rb_optparse.zsh
34
- - optparse.gemspec
35
- - rakelib/changelogs.rake
36
- - rakelib/epoch.rake
37
- - rakelib/version.rake
38
93
  homepage: https://github.com/ruby/optparse
39
94
  licenses:
40
95
  - Ruby
@@ -43,7 +98,10 @@ metadata:
43
98
  homepage_uri: https://github.com/ruby/optparse
44
99
  source_code_uri: https://github.com/ruby/optparse
45
100
  post_install_message:
46
- rdoc_options: []
101
+ rdoc_options:
102
+ - "--main=README.md"
103
+ - "--op=rdoc"
104
+ - "--page-dir=doc"
47
105
  require_paths:
48
106
  - lib
49
107
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -57,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
115
  - !ruby/object:Gem::Version
58
116
  version: '0'
59
117
  requirements: []
60
- rubygems_version: 3.3.0.dev
118
+ rubygems_version: 3.4.0.dev
61
119
  signing_key:
62
120
  specification_version: 4
63
121
  summary: OptionParser is a class for command-line option analysis.
data/Rakefile DELETED
@@ -1,10 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << "test/lib"
6
- t.ruby_opts << "-rhelper"
7
- t.test_files = FileList['test/**/test_*.rb']
8
- end
9
-
10
- task :default => :test
data/optparse.gemspec DELETED
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- name = File.basename(__FILE__, ".gemspec")
4
- version = ["lib", Array.new(name.count("-")+1, "..").join("/")].find do |dir|
5
- break File.foreach(File.join(__dir__, dir, "#{name.tr('-', '/')}.rb")) do |line|
6
- /^\s*OptionParser::Version\s*=\s*"(.*)"/ =~ line and break $1
7
- end rescue nil
8
- end
9
-
10
- Gem::Specification.new do |spec|
11
- spec.name = name
12
- spec.version = version
13
- spec.authors = ["Nobu Nakada"]
14
- spec.email = ["nobu@ruby-lang.org"]
15
-
16
- spec.summary = %q{OptionParser is a class for command-line option analysis.}
17
- spec.description = %q{OptionParser is a class for command-line option analysis.}
18
- spec.homepage = "https://github.com/ruby/optparse"
19
- spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
20
- spec.licenses = ["Ruby", "BSD-2-Clause"]
21
-
22
- spec.metadata["homepage_uri"] = spec.homepage
23
- spec.metadata["source_code_uri"] = spec.homepage
24
-
25
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
26
- `git ls-files -z`.split("\x0").reject { |f|
27
- f.match(%r{\A(?:(?:test|spec|features)/|Gemfile|\.(?:editor|git))})
28
- }
29
- end
30
- spec.bindir = "exe"
31
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
- spec.require_paths = ["lib"]
33
- end
@@ -1,34 +0,0 @@
1
- task "build" => "changelogs"
2
-
3
- changelog = proc do |output, ver = nil, prev = nil|
4
- ver &&= Gem::Version.new(ver)
5
- range = [[prev], [ver, "HEAD"]].map {|ver, branch| ver ? "v#{ver.to_s}" : branch}.compact.join("..")
6
- IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log|
7
- line = log.gets
8
- FileUtils.mkpath(File.dirname(output))
9
- File.open(output, "wb") do |f|
10
- f.print "-*- coding: utf-8 -*-\n\n", line
11
- log.each_line do |line|
12
- line.sub!(/^(?!:)(?:Author|Commit)?(?:Date)?: /, ' \&')
13
- line.sub!(/ +$/, '')
14
- f.print(line)
15
- end
16
- end
17
- end
18
- end
19
-
20
- tags = IO.popen(%w[git tag -l v[0-9]*]).grep(/v(.*)/) {$1}
21
- tags.sort_by! {|tag| tag.scan(/\d+/).map(&:to_i)}
22
- tags.inject(nil) do |prev, tag|
23
- task("logs/ChangeLog-#{tag}") {|t| changelog[t.name, tag, prev]}
24
- tag
25
- end
26
-
27
- desc "Make ChangeLog"
28
- task "ChangeLog", [:ver, :prev] do |t, ver: nil, prev: tags.last|
29
- changelog[t.name, ver, prev]
30
- end
31
-
32
- changelogs = ["ChangeLog", *tags.map {|tag| "logs/ChangeLog-#{tag}"}]
33
- task "changelogs" => changelogs
34
- CLOBBER.concat(changelogs) << "logs"
data/rakelib/epoch.rake DELETED
@@ -1,5 +0,0 @@
1
- task "build" => "date_epoch"
2
-
3
- task "date_epoch" do
4
- ENV["SOURCE_DATE_EPOCH"] = IO.popen(%W[git -C #{__dir__} log -1 --format=%ct], &:read).chomp
5
- end