gli 2.21.2 → 2.21.4
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 +4 -4
- data/CONTRIBUTING.md +3 -0
- data/bin/ci +12 -24
- data/dx/build +2 -2
- data/gli.gemspec +9 -0
- data/lib/gli/gli_option_parser.rb +4 -3
- data/lib/gli/version.rb +1 -1
- data/test/unit/gli_test.rb +39 -0
- metadata +9 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60f96a57b4abf16e79016ea09350797584e9a26882630c54340209c8db4ff527
|
4
|
+
data.tar.gz: 67e19189b4f770c374609de68d67a5ae41fb58ae92faaa3f735a4507db14d44b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07e228e867c65b76c31929e6f2680a884c4f37841dc43a3ca778e0b272583ca8e9e194d63be45bd843def5ba4fceeb496f20c9b0392448f4acc6bf8fa62a3b4d
|
7
|
+
data.tar.gz: 54151c1d669e25abeb7f1061003acf9230c4906dcfdf3766aefb90eb86f901416edb657d718bceda944817fb7d6f923530a892ec3c2aba4ba6db3e61167bb53f
|
data/CONTRIBUTING.md
CHANGED
@@ -53,6 +53,9 @@ checked-out files, the other containers will have access as well.
|
|
53
53
|
2. `inside-docker-container> bin/setup # installs all gems`
|
54
54
|
3. `inside-docker-container> bin/rake # runs all tests`
|
55
55
|
|
56
|
+
You can also try using `bin/ci` on your computer (not inside a Docker container), which will run tests across the entire build
|
57
|
+
matrix.
|
58
|
+
|
56
59
|
#### If You Want To Use Your Local Computer
|
57
60
|
|
58
61
|
In theory, GLI can be worked on using RVM, RBEnv, asdf, or whatever other way you want to manage Ruby. You can create a
|
data/bin/ci
CHANGED
@@ -1,29 +1,17 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
3
|
set -e
|
4
|
-
if [ -z $1 ]; then
|
5
|
-
echo "[bin/ci] Running with default warnings"
|
6
|
-
export RUBYOPT=
|
7
|
-
else
|
8
|
-
if [ $1 == 'warnings' ]; then
|
9
|
-
echo "[bin/ci] Running with all warnings on"
|
10
|
-
export RUBYOPT=-w
|
11
|
-
else
|
12
|
-
if [ $1 == 'none' ]; then
|
13
|
-
echo "[bin/ci] Running with all warnings off"
|
14
|
-
export RUBYOPT='-W0'
|
15
|
-
else
|
16
|
-
echo "[bin/ci] '$1' is not a supported option"
|
17
|
-
echo "[bin/ci] usage: $0 # run with default warnings"
|
18
|
-
echo "[bin/ci] usage: $0 warnings # run with all warnings"
|
19
|
-
echo "[bin/ci] usage: $0 none # run with warnings disabled"
|
20
|
-
exit 1
|
21
|
-
fi
|
22
|
-
fi
|
23
|
-
fi
|
24
4
|
|
25
|
-
|
26
|
-
|
5
|
+
SCRIPT_DIR=$( cd -- "$( dirname -- "${0}" )" > /dev/null 2>&1 && pwd )
|
6
|
+
DX_DIR="${SCRIPT_DIR}/../dx"
|
7
|
+
|
8
|
+
. "${DX_DIR}/docker-compose.env"
|
9
|
+
. "${DX_DIR}/setupkit.sh.lib"
|
10
|
+
|
11
|
+
for ruby_version in ${RUBY_VERSIONS[@]}; do
|
12
|
+
log "Setting up for Ruby version '${ruby_version}'"
|
13
|
+
dx/exec -v ${ruby_version} bin/setup
|
14
|
+
log "Running tests for Ruby version '${ruby_version}'"
|
15
|
+
dx/exec -v ${ruby_version} bin/rake
|
16
|
+
done
|
27
17
|
|
28
|
-
echo "[bin/ci] Running integration tests"
|
29
|
-
bin/rake test:integration
|
data/dx/build
CHANGED
@@ -35,7 +35,7 @@ log "✨" "Creating docker-compose.dx.yml"
|
|
35
35
|
compose_file="docker-compose.dx.yml"
|
36
36
|
log "🗑️" "Deleting previous ${compose_file}"
|
37
37
|
|
38
|
-
rm "${compose_file}"
|
38
|
+
rm -f "${compose_file}"
|
39
39
|
echo "# THIS IS GENERATED - DO NOT EDIT" > "${compose_file}"
|
40
40
|
echo "" >> "${compose_file}"
|
41
41
|
echo "services:" >> "${compose_file}"
|
@@ -54,7 +54,7 @@ for ruby_version in ${RUBY_VERSIONS[@]}; do
|
|
54
54
|
echo " entrypoint: /root/show-help-in-app-container-then-wait.sh" >> "${compose_file}"
|
55
55
|
echo " working_dir: /root/work" >> "${compose_file}"
|
56
56
|
done
|
57
|
-
log "🎼" "${compose_file} is
|
57
|
+
log "🎼" "${compose_file} is now created"
|
58
58
|
log "🔄" "You can run dx/start to start it up, though you may need to stop it first with Ctrl-C"
|
59
59
|
|
60
60
|
# vim: ft=bash
|
data/gli.gemspec
CHANGED
@@ -12,6 +12,15 @@ spec = Gem::Specification.new do |s|
|
|
12
12
|
s.summary = "Build command-suite CLI apps that are awesome."
|
13
13
|
s.description = "Build command-suite CLI apps that are awesome. Bootstrap your app, add commands, options and documentation while maintaining a well-tested idiomatic command-line app"
|
14
14
|
|
15
|
+
s.metadata = {
|
16
|
+
'bug_tracker_uri' => 'https://github.com/davetron5000/gli/issues',
|
17
|
+
'changelog_uri' => 'https://github.com/davetron5000/gli/releases',
|
18
|
+
'documentation_uri' => 'http://davetron5000.github.io/gli/rdoc/index.html',
|
19
|
+
'homepage_uri' => 'https://davetron5000.github.com/gli/',
|
20
|
+
'source_code_uri' => 'https://github.com/davetron5000/gli/',
|
21
|
+
'wiki_url' => 'https://github.com/davetron5000/gli/wiki',
|
22
|
+
}
|
23
|
+
|
15
24
|
s.files = `git ls-files`.split("\n")
|
16
25
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
26
|
s.require_paths = ["lib"]
|
@@ -109,9 +109,10 @@ module GLI
|
|
109
109
|
def verify_required_options!(flags, command, options)
|
110
110
|
missing_required_options = flags.values.
|
111
111
|
select(&:required?).
|
112
|
-
|
113
|
-
options[option.name]
|
114
|
-
|
112
|
+
select { |option|
|
113
|
+
options[option.name] == nil ||
|
114
|
+
( options[option.name].kind_of?(Array) && options[option.name].empty? )
|
115
|
+
}
|
115
116
|
unless missing_required_options.empty?
|
116
117
|
missing_required_options.sort!
|
117
118
|
raise MissingRequiredArgumentsException.new(missing_required_options.map { |option|
|
data/lib/gli/version.rb
CHANGED
data/test/unit/gli_test.rb
CHANGED
@@ -81,6 +81,25 @@ class GLITest < Minitest::Test
|
|
81
81
|
|
82
82
|
end
|
83
83
|
|
84
|
+
def test_command_options_accepting_multiple_values_can_be_required
|
85
|
+
@app.reset
|
86
|
+
@called = false
|
87
|
+
@app.command :foo do |c|
|
88
|
+
c.flag :flag, :required => true, :multiple => true
|
89
|
+
c.action do |global, options, arguments|
|
90
|
+
@called = true
|
91
|
+
end
|
92
|
+
end
|
93
|
+
assert_equal 64, @app.run(['foo']), "Expected exit status to be 64"
|
94
|
+
assert @fake_stderr.contained?(/flag is required/), @fake_stderr.strings.inspect
|
95
|
+
assert @fake_stderr.contained?(/flag is required/), @fake_stderr.strings.inspect
|
96
|
+
assert !@called
|
97
|
+
|
98
|
+
assert_equal 0, @app.run(['foo','--flag=bar']), "Expected exit status to be 0 #{@fake_stderr.strings.join(',')}"
|
99
|
+
assert @called
|
100
|
+
|
101
|
+
end
|
102
|
+
|
84
103
|
def test_global_options_can_be_required
|
85
104
|
@app.reset
|
86
105
|
@called = false
|
@@ -102,6 +121,25 @@ class GLITest < Minitest::Test
|
|
102
121
|
|
103
122
|
end
|
104
123
|
|
124
|
+
def test_global_options_accepting_multiple_can_be_required
|
125
|
+
@app.reset
|
126
|
+
@called = false
|
127
|
+
@app.flag :flag, :required => true, :multiple => true
|
128
|
+
@app.command :foo do |c|
|
129
|
+
c.action do |global, options, arguments|
|
130
|
+
@called = true
|
131
|
+
end
|
132
|
+
end
|
133
|
+
assert_equal 64, @app.run(['foo']), "Expected exit status to be 64"
|
134
|
+
assert @fake_stderr.contained?(/flag is required/), @fake_stderr.strings.inspect
|
135
|
+
assert @fake_stderr.contained?(/flag is required/), @fake_stderr.strings.inspect
|
136
|
+
assert !@called
|
137
|
+
|
138
|
+
assert_equal 0, @app.run(['--flag=bar','foo']), "Expected exit status to be 0 #{@fake_stderr.strings.join(',')}"
|
139
|
+
assert @called
|
140
|
+
|
141
|
+
end
|
142
|
+
|
105
143
|
def test_global_required_options_are_ignored_on_help
|
106
144
|
@app.reset
|
107
145
|
@called = false
|
@@ -161,6 +199,7 @@ class GLITest < Minitest::Test
|
|
161
199
|
raise failure if !failure.nil?
|
162
200
|
end
|
163
201
|
|
202
|
+
|
164
203
|
def test_command_line_overrides_config
|
165
204
|
failure = nil
|
166
205
|
@app.reset
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.21.
|
4
|
+
version: 2.21.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Copeland
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-07-
|
11
|
+
date: 2024-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -212,7 +212,13 @@ files:
|
|
212
212
|
homepage: http://davetron5000.github.io/gli
|
213
213
|
licenses:
|
214
214
|
- Apache-2.0
|
215
|
-
metadata:
|
215
|
+
metadata:
|
216
|
+
bug_tracker_uri: https://github.com/davetron5000/gli/issues
|
217
|
+
changelog_uri: https://github.com/davetron5000/gli/releases
|
218
|
+
documentation_uri: http://davetron5000.github.io/gli/rdoc/index.html
|
219
|
+
homepage_uri: https://davetron5000.github.com/gli/
|
220
|
+
source_code_uri: https://github.com/davetron5000/gli/
|
221
|
+
wiki_url: https://github.com/davetron5000/gli/wiki
|
216
222
|
post_install_message:
|
217
223
|
rdoc_options:
|
218
224
|
- "--title"
|