opt_parse_builder 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/.rspec +1 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +35 -0
- data/LICENSE +23 -0
- data/README.md +434 -0
- data/Rakefile +13 -0
- data/examples/hello_world.rb +20 -0
- data/lib/opt_parse_builder.rb +156 -0
- data/lib/opt_parse_builder/argument.rb +62 -0
- data/lib/opt_parse_builder/argument_builder.rb +193 -0
- data/lib/opt_parse_builder/argument_bundle.rb +30 -0
- data/lib/opt_parse_builder/argument_bundle_builder.rb +34 -0
- data/lib/opt_parse_builder/argument_values.rb +60 -0
- data/lib/opt_parse_builder/banner_argument.rb +11 -0
- data/lib/opt_parse_builder/constant_argument.rb +16 -0
- data/lib/opt_parse_builder/errors.rb +10 -0
- data/lib/opt_parse_builder/formats_operand_name.rb +9 -0
- data/lib/opt_parse_builder/has_value.rb +21 -0
- data/lib/opt_parse_builder/null_argument.rb +4 -0
- data/lib/opt_parse_builder/option_argument.rb +33 -0
- data/lib/opt_parse_builder/optional_operand_argument.rb +29 -0
- data/lib/opt_parse_builder/parser.rb +345 -0
- data/lib/opt_parse_builder/parser_builder.rb +17 -0
- data/lib/opt_parse_builder/required_operand_argument.rb +32 -0
- data/lib/opt_parse_builder/separator_argument.rb +11 -0
- data/lib/opt_parse_builder/splat_operand_argument.rb +22 -0
- data/lib/opt_parse_builder/stable_sort.rb +13 -0
- data/lib/opt_parse_builder/version.rb +6 -0
- data/opt_parse_builder.gemspec +35 -0
- data/rake/bundler.rake +1 -0
- data/rake/default.rake +1 -0
- data/rake/rdoc.rake +7 -0
- data/rake/spec.rake +3 -0
- data/rake/test.rake +2 -0
- metadata +126 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
module OptParseBuilder
|
2
|
+
class RequiredOperandArgument < Argument # :nodoc:
|
3
|
+
|
4
|
+
include FormatsOperandName
|
5
|
+
include HasValue
|
6
|
+
|
7
|
+
def initialize(key, default, help_name)
|
8
|
+
init_value(key, default)
|
9
|
+
@help_name = help_name || key
|
10
|
+
end
|
11
|
+
|
12
|
+
def operand_notation
|
13
|
+
"<#{format_operand_name(@help_name)}>"
|
14
|
+
end
|
15
|
+
|
16
|
+
def shift_operand(argv)
|
17
|
+
@value = argv.shift
|
18
|
+
unless @value
|
19
|
+
raise OptionParser::MissingArgument, operand_notation
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def optional
|
24
|
+
OptionalOperandArgument.new(@key, @default, @help_name)
|
25
|
+
end
|
26
|
+
|
27
|
+
def required
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module OptParseBuilder
|
2
|
+
class SplatOperandArgument < Argument # :nodoc:
|
3
|
+
|
4
|
+
include FormatsOperandName
|
5
|
+
include HasValue
|
6
|
+
|
7
|
+
def initialize(key, default, help_name)
|
8
|
+
init_value(key, default)
|
9
|
+
@help_name = help_name || key
|
10
|
+
end
|
11
|
+
|
12
|
+
def operand_notation
|
13
|
+
"[<#{format_operand_name(@help_name)}>...]"
|
14
|
+
end
|
15
|
+
|
16
|
+
def shift_operand(argv)
|
17
|
+
@value = argv.dup
|
18
|
+
argv.clear
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require "opt_parse_builder/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "opt_parse_builder"
|
7
|
+
spec.version = OptParseBuilder::VERSION
|
8
|
+
spec.authors = ["Wayne Conrad"]
|
9
|
+
spec.email = ["kf7qga@gmail.com"]
|
10
|
+
spec.summary = "Builder DSL for optparse, with more"
|
11
|
+
spec.license = 'MIT'
|
12
|
+
spec.description = <<~DESCRIPTION
|
13
|
+
Processes CLI arguments using optparse. Adds to optparse a
|
14
|
+
compact builder-style DSL, operand (positional argument) parsing,
|
15
|
+
and easy sharing of common argument definitions within a suite of
|
16
|
+
commands. That's all it does--it is not a framework.
|
17
|
+
DESCRIPTION
|
18
|
+
spec.homepage = "https://github.com/wconrad/opt_parse_builder"
|
19
|
+
# Specify which files should be added to the gem when it is released.
|
20
|
+
# The `git ls-files -z` loads the files in the RubyGem that have
|
21
|
+
# been added into git.
|
22
|
+
spec.files = Dir.chdir(__dir__) do
|
23
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
24
|
+
f.match(%r{^(test|spec|features)/})
|
25
|
+
end
|
26
|
+
end
|
27
|
+
spec.bindir = "bin"
|
28
|
+
spec.executables = spec.files.grep(%r{^#{spec.bindir}/}) do |f|
|
29
|
+
File.basename(f)
|
30
|
+
end
|
31
|
+
spec.require_paths = ["lib"]
|
32
|
+
spec.add_development_dependency "bundler", "~> 2.1"
|
33
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
34
|
+
spec.add_development_dependency "rspec", "~> 3.10"
|
35
|
+
end
|
data/rake/bundler.rake
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/rake/default.rake
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
task :default => [:test]
|
data/rake/rdoc.rake
ADDED
data/rake/spec.rake
ADDED
data/rake/test.rake
ADDED
metadata
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: opt_parse_builder
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Wayne Conrad
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-11-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.1'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '13.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '13.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.10'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.10'
|
55
|
+
description: |
|
56
|
+
Processes CLI arguments using optparse. Adds to optparse a
|
57
|
+
compact builder-style DSL, operand (positional argument) parsing,
|
58
|
+
and easy sharing of common argument definitions within a suite of
|
59
|
+
commands. That's all it does--it is not a framework.
|
60
|
+
email:
|
61
|
+
- kf7qga@gmail.com
|
62
|
+
executables: []
|
63
|
+
extensions: []
|
64
|
+
extra_rdoc_files: []
|
65
|
+
files:
|
66
|
+
- ".gitignore"
|
67
|
+
- ".rspec"
|
68
|
+
- ".ruby-version"
|
69
|
+
- CHANGELOG.md
|
70
|
+
- Gemfile
|
71
|
+
- Gemfile.lock
|
72
|
+
- LICENSE
|
73
|
+
- README.md
|
74
|
+
- Rakefile
|
75
|
+
- examples/hello_world.rb
|
76
|
+
- lib/opt_parse_builder.rb
|
77
|
+
- lib/opt_parse_builder/argument.rb
|
78
|
+
- lib/opt_parse_builder/argument_builder.rb
|
79
|
+
- lib/opt_parse_builder/argument_bundle.rb
|
80
|
+
- lib/opt_parse_builder/argument_bundle_builder.rb
|
81
|
+
- lib/opt_parse_builder/argument_values.rb
|
82
|
+
- lib/opt_parse_builder/banner_argument.rb
|
83
|
+
- lib/opt_parse_builder/constant_argument.rb
|
84
|
+
- lib/opt_parse_builder/errors.rb
|
85
|
+
- lib/opt_parse_builder/formats_operand_name.rb
|
86
|
+
- lib/opt_parse_builder/has_value.rb
|
87
|
+
- lib/opt_parse_builder/null_argument.rb
|
88
|
+
- lib/opt_parse_builder/option_argument.rb
|
89
|
+
- lib/opt_parse_builder/optional_operand_argument.rb
|
90
|
+
- lib/opt_parse_builder/parser.rb
|
91
|
+
- lib/opt_parse_builder/parser_builder.rb
|
92
|
+
- lib/opt_parse_builder/required_operand_argument.rb
|
93
|
+
- lib/opt_parse_builder/separator_argument.rb
|
94
|
+
- lib/opt_parse_builder/splat_operand_argument.rb
|
95
|
+
- lib/opt_parse_builder/stable_sort.rb
|
96
|
+
- lib/opt_parse_builder/version.rb
|
97
|
+
- opt_parse_builder.gemspec
|
98
|
+
- rake/bundler.rake
|
99
|
+
- rake/default.rake
|
100
|
+
- rake/rdoc.rake
|
101
|
+
- rake/spec.rake
|
102
|
+
- rake/test.rake
|
103
|
+
homepage: https://github.com/wconrad/opt_parse_builder
|
104
|
+
licenses:
|
105
|
+
- MIT
|
106
|
+
metadata: {}
|
107
|
+
post_install_message:
|
108
|
+
rdoc_options: []
|
109
|
+
require_paths:
|
110
|
+
- lib
|
111
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
requirements: []
|
122
|
+
rubygems_version: 3.1.4
|
123
|
+
signing_key:
|
124
|
+
specification_version: 4
|
125
|
+
summary: Builder DSL for optparse, with more
|
126
|
+
test_files: []
|