libclimate-ruby 0.15.2 → 0.16.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/flag_and_option_specifications.from_DATA.md +1 -1
- data/examples/flag_and_option_specifications.from_DATA.rb +1 -1
- data/examples/flag_and_option_specifications.md +1 -1
- data/examples/flag_and_option_specifications.rb +1 -1
- data/examples/show_usage_and_version.md +1 -1
- data/examples/show_usage_and_version.rb +1 -1
- data/lib/libclimate/climate.rb +14 -3
- data/lib/libclimate/version.rb +4 -3
- data/test/scratch/specifications.rb +2 -2
- data/test/unit/tc_abort.rb +1 -1
- data/test/unit/tc_double_slash_index.rb +91 -0
- data/test/unit/tc_infer_version.rb +1 -1
- data/test/unit/tc_minimal.rb +3 -1
- data/test/unit/tc_minimal_CLASP.rb +3 -1
- data/test/unit/tc_parse.rb +7 -1
- data/test/unit/tc_parse_and_verify.rb +4 -1
- data/test/unit/tc_test_specifications.rb +1 -1
- data/test/unit/tc_values.rb +1 -1
- data/test/unit/tc_with_blocks.rb +1 -1
- data/test/unit/tc_with_blocks_CLASP.rb +1 -1
- data/test/unit/ts_all.rb +1 -1
- metadata +15 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1e94d5cc4ba07147cf90cdd5a0429d30bef55324228eac1c27246020f35b267
|
4
|
+
data.tar.gz: 0fbd451ec141cdaeb5e6f2d4f720d970d0287bbc24140a9c90957a1fbd247d8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e56af8baca9f1278d41f9efa9acc8a4cd7fed0736592f875415874078a341bfbbf9c1563daa0f7bc7c2b8eeb1c4f683ad19b1c74ac27903ec6c4af73344bbddb
|
7
|
+
data.tar.gz: 8ac03e855c3f425857aa9fee828c637a7368cff1af1ce82ef167d3b111f74d37dc3b0d3a42d279c517a51a3ccac7dbcdf7ad7bc41d626d3eb8cd08172644707b
|
data/lib/libclimate/climate.rb
CHANGED
@@ -5,12 +5,13 @@
|
|
5
5
|
# Purpose: Definition of the ::LibCLImate::Climate class
|
6
6
|
#
|
7
7
|
# Created: 13th July 2015
|
8
|
-
# Updated:
|
8
|
+
# Updated: 24th July 2022
|
9
9
|
#
|
10
10
|
# Home: http://github.com/synesissoftware/libCLImate.Ruby
|
11
11
|
#
|
12
12
|
# Author: Matthew Wilson
|
13
13
|
#
|
14
|
+
# Copyright (c) 2019-2022, Matthew Wilson and Synesis Information Systems
|
14
15
|
# Copyright (c) 2015-2019, Matthew Wilson and Synesis Software
|
15
16
|
# All rights reserved.
|
16
17
|
#
|
@@ -183,6 +184,7 @@ class Climate
|
|
183
184
|
@flags = arguments.flags
|
184
185
|
@options = arguments.options
|
185
186
|
@values = arguments.values
|
187
|
+
@double_slash_index = arguments.double_slash_index
|
186
188
|
end
|
187
189
|
|
188
190
|
# (Climate) The +Climate+ instance from which this instance was obtained
|
@@ -209,6 +211,8 @@ class Climate
|
|
209
211
|
# (String) A (frozen) array of values
|
210
212
|
attr_reader :values
|
211
213
|
|
214
|
+
attr_reader :double_slash_index
|
215
|
+
|
212
216
|
# Verifies the initiating command-line against the specifications,
|
213
217
|
# raising an exception if any missing, unused, or unrecognised flags,
|
214
218
|
# options, or values are found
|
@@ -970,8 +974,8 @@ class Climate
|
|
970
974
|
#
|
971
975
|
# === Returns
|
972
976
|
# an instance of a type derived from +::Hash+ with the additional
|
973
|
-
# attributes +flags+, +options+, +values+, and
|
974
|
-
#
|
977
|
+
# attributes +flags+, +options+, +values+, +double_slash_index+ and
|
978
|
+
# +argv+.
|
975
979
|
def run(argv = ARGV) # :yields: customised +::Hash+
|
976
980
|
|
977
981
|
raise ArgumentError, "argv may not be nil" if argv.nil?
|
@@ -988,6 +992,8 @@ class Climate
|
|
988
992
|
options = arguments.options
|
989
993
|
values = arguments.values.to_a
|
990
994
|
|
995
|
+
double_slash_index = arguments.double_slash_index
|
996
|
+
|
991
997
|
results = {
|
992
998
|
|
993
999
|
flags: {
|
@@ -1138,6 +1144,11 @@ class Climate
|
|
1138
1144
|
self[:values]
|
1139
1145
|
end
|
1140
1146
|
|
1147
|
+
results.define_singleton_method(:double_slash_index) do
|
1148
|
+
|
1149
|
+
double_slash_index
|
1150
|
+
end
|
1151
|
+
|
1141
1152
|
results.define_singleton_method(:argv) do
|
1142
1153
|
|
1143
1154
|
argv
|
data/lib/libclimate/version.rb
CHANGED
@@ -4,11 +4,12 @@
|
|
4
4
|
# Purpose: Version for libclimate.Ruby library
|
5
5
|
#
|
6
6
|
# Created: 13th July 2015
|
7
|
-
# Updated:
|
7
|
+
# Updated: 1st December 2023
|
8
8
|
#
|
9
9
|
# Home: http://github.com/synesissoftware/libCLImate.Ruby
|
10
10
|
#
|
11
|
-
# Copyright (c)
|
11
|
+
# Copyright (c) 2019-2023, Matthew Wilson and Synesis Information Systems
|
12
|
+
# Copyright (c) 2015-2019, Matthew Wilson and Synesis Software
|
12
13
|
# All rights reserved.
|
13
14
|
#
|
14
15
|
# Redistribution and use in source and binary forms, with or without
|
@@ -43,7 +44,7 @@
|
|
43
44
|
module LibCLImate
|
44
45
|
|
45
46
|
# Current version of the libCLImate.Ruby library
|
46
|
-
VERSION = '0.
|
47
|
+
VERSION = '0.16.0.1'
|
47
48
|
|
48
49
|
private
|
49
50
|
VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#! /usr/bin/env ruby
|
2
2
|
|
3
3
|
#############################################################################
|
4
4
|
# File: test/scratch/specifications.rb
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# Purpose: Demonstrates use of specifications in options and flags
|
7
7
|
#
|
8
8
|
# Created: 7th February 2018
|
9
|
-
# Updated:
|
9
|
+
# Updated: 22nd July 2022
|
10
10
|
#
|
11
11
|
# Author: Matthew Wilson
|
12
12
|
#
|
data/test/unit/tc_abort.rb
CHANGED
@@ -0,0 +1,91 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# test attribute `LibCLImate::Climate#double_slash_index`
|
4
|
+
|
5
|
+
$:.unshift File.join(File.dirname(__FILE__), '../..', 'lib')
|
6
|
+
|
7
|
+
|
8
|
+
require 'libclimate'
|
9
|
+
|
10
|
+
require 'xqsr3/extensions/test/unit'
|
11
|
+
|
12
|
+
require 'test/unit'
|
13
|
+
|
14
|
+
require 'stringio'
|
15
|
+
|
16
|
+
class Test_Climate_double_slash_index < Test::Unit::TestCase
|
17
|
+
|
18
|
+
def test_some_arguments_without_DSI
|
19
|
+
|
20
|
+
climate = LibCLImate::Climate.new do |cl|
|
21
|
+
|
22
|
+
cl.add_flag('--abc')
|
23
|
+
|
24
|
+
cl.add_flag('-d')
|
25
|
+
cl.add_flag('-e')
|
26
|
+
cl.add_flag('-f')
|
27
|
+
end
|
28
|
+
|
29
|
+
argv = %w{ --abc -d -e -f }
|
30
|
+
|
31
|
+
r = climate.run argv
|
32
|
+
|
33
|
+
assert_not_nil r
|
34
|
+
assert_kind_of ::Hash, r
|
35
|
+
assert 3 <= r.size
|
36
|
+
assert_not_nil r[:flags]
|
37
|
+
assert_not_nil r[:options]
|
38
|
+
assert_not_nil r[:values]
|
39
|
+
assert_equal 4, r[:flags].size
|
40
|
+
assert_equal 4, r.flags.size
|
41
|
+
assert_equal 4, r[:flags][:given].size
|
42
|
+
assert_equal 0, r[:flags][:handled].size
|
43
|
+
assert_equal 4, r[:flags][:unhandled].size
|
44
|
+
assert_equal 0, r[:flags][:unknown].size
|
45
|
+
assert_equal 4, r[:options].size
|
46
|
+
assert_equal 0, r[:options][:given].size
|
47
|
+
assert_equal 0, r[:options][:handled].size
|
48
|
+
assert_equal 0, r[:options][:unhandled].size
|
49
|
+
assert_equal 0, r[:options][:unknown].size
|
50
|
+
assert_equal 0, r[:values].size
|
51
|
+
assert_nil r.double_slash_index
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_some_arguments_with_DSI
|
55
|
+
|
56
|
+
climate = LibCLImate::Climate.new do |cl|
|
57
|
+
|
58
|
+
cl.add_flag('--abc')
|
59
|
+
|
60
|
+
cl.add_flag('-d')
|
61
|
+
cl.add_flag('-e')
|
62
|
+
cl.add_flag('-f')
|
63
|
+
end
|
64
|
+
|
65
|
+
argv = %w{ --abc -d -- -e -f }
|
66
|
+
|
67
|
+
r = climate.run argv
|
68
|
+
|
69
|
+
assert_not_nil r
|
70
|
+
assert_kind_of ::Hash, r
|
71
|
+
assert 3 <= r.size
|
72
|
+
assert_not_nil r[:flags]
|
73
|
+
assert_not_nil r[:options]
|
74
|
+
assert_not_nil r[:values]
|
75
|
+
assert_equal 4, r[:flags].size
|
76
|
+
assert_equal 4, r.flags.size
|
77
|
+
assert_equal 2, r[:flags][:given].size
|
78
|
+
assert_equal 0, r[:flags][:handled].size
|
79
|
+
assert_equal 2, r[:flags][:unhandled].size
|
80
|
+
assert_equal 0, r[:flags][:unknown].size
|
81
|
+
assert_equal 4, r[:options].size
|
82
|
+
assert_equal 0, r[:options][:given].size
|
83
|
+
assert_equal 0, r[:options][:handled].size
|
84
|
+
assert_equal 0, r[:options][:unhandled].size
|
85
|
+
assert_equal 0, r[:options][:unknown].size
|
86
|
+
assert_equal 2, r[:values].size
|
87
|
+
assert_equal '-e', r[:values][0]
|
88
|
+
assert_equal '-f', r[:values][1]
|
89
|
+
assert_equal 2, r.double_slash_index
|
90
|
+
end
|
91
|
+
end
|
data/test/unit/tc_minimal.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#! /usr/bin/env ruby
|
2
2
|
#
|
3
3
|
# test simple scenarios
|
4
4
|
|
@@ -71,6 +71,7 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
71
71
|
assert_equal 0, r[:options][:unhandled].size
|
72
72
|
assert_equal 0, r[:options][:unknown].size
|
73
73
|
assert_equal 0, r[:values].size
|
74
|
+
assert_nil r.double_slash_index
|
74
75
|
|
75
76
|
lines = str.string.split(/\n/)
|
76
77
|
lines = lines.reject { |line| line.chomp.strip.empty? }
|
@@ -119,6 +120,7 @@ class Test_Climate_minimal < Test::Unit::TestCase
|
|
119
120
|
assert_equal 0, r[:options][:unhandled].size
|
120
121
|
assert_equal 0, r[:options][:unknown].size
|
121
122
|
assert_equal 0, r[:values].size
|
123
|
+
assert_nil r.double_slash_index
|
122
124
|
|
123
125
|
lines = str.string.split(/\n/)
|
124
126
|
lines = lines.reject { |line| line.chomp.strip.empty? }
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#! /usr/bin/env ruby
|
2
2
|
#
|
3
3
|
# test simple scenarios (with CLASP)
|
4
4
|
|
@@ -71,6 +71,7 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
71
71
|
assert_equal 0, r[:options][:unhandled].size
|
72
72
|
assert_equal 0, r[:options][:unknown].size
|
73
73
|
assert_equal 0, r[:values].size
|
74
|
+
assert_nil r.double_slash_index
|
74
75
|
|
75
76
|
lines = str.string.split(/\n/)
|
76
77
|
lines = lines.reject { |line| line.chomp.strip.empty? }
|
@@ -119,6 +120,7 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
|
|
119
120
|
assert_equal 0, r[:options][:unhandled].size
|
120
121
|
assert_equal 0, r[:options][:unknown].size
|
121
122
|
assert_equal 0, r[:values].size
|
123
|
+
assert_nil r.double_slash_index
|
122
124
|
|
123
125
|
lines = str.string.split(/\n/)
|
124
126
|
lines = lines.reject { |line| line.chomp.strip.empty? }
|
data/test/unit/tc_parse.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#! /usr/bin/env ruby
|
2
2
|
#
|
3
3
|
# test version inference
|
4
4
|
|
@@ -44,6 +44,7 @@ class Test_Climate_parse < Test::Unit::TestCase
|
|
44
44
|
assert_equal 0, r.flags.size
|
45
45
|
assert_equal 0, r.options.size
|
46
46
|
assert_equal 0, r.values.size
|
47
|
+
assert_nil r.double_slash_index
|
47
48
|
|
48
49
|
r.verify()
|
49
50
|
end
|
@@ -69,6 +70,7 @@ class Test_Climate_parse < Test::Unit::TestCase
|
|
69
70
|
argv = [
|
70
71
|
|
71
72
|
'-d',
|
73
|
+
'--',
|
72
74
|
]
|
73
75
|
|
74
76
|
r = climate.parse argv
|
@@ -79,6 +81,7 @@ class Test_Climate_parse < Test::Unit::TestCase
|
|
79
81
|
assert_equal 1, r.flags.size
|
80
82
|
assert_equal 0, r.options.size
|
81
83
|
assert_equal 0, r.values.size
|
84
|
+
assert_equal 1, r.double_slash_index
|
82
85
|
|
83
86
|
flag0 = r.flags[0]
|
84
87
|
|
@@ -125,6 +128,7 @@ class Test_Climate_parse < Test::Unit::TestCase
|
|
125
128
|
assert_equal 0, r.flags.size
|
126
129
|
assert_equal 1, r.options.size
|
127
130
|
assert_equal 0, r.values.size
|
131
|
+
assert_nil r.double_slash_index
|
128
132
|
|
129
133
|
option0 = r.options[0]
|
130
134
|
|
@@ -156,6 +160,7 @@ class Test_Climate_parse < Test::Unit::TestCase
|
|
156
160
|
assert $stderr.equal? climate.stderr
|
157
161
|
|
158
162
|
argv = [
|
163
|
+
'--',
|
159
164
|
]
|
160
165
|
|
161
166
|
r = climate.parse argv
|
@@ -164,6 +169,7 @@ class Test_Climate_parse < Test::Unit::TestCase
|
|
164
169
|
assert_equal 0, r.flags.size
|
165
170
|
assert_equal 0, r.options.size
|
166
171
|
assert_equal 0, r.values.size
|
172
|
+
assert_equal 0, r.double_slash_index
|
167
173
|
|
168
174
|
assert_raise_with_message(MissingRequiredException, /.*verbosity.*not specified/) { r.verify(raise_on_required: MissingRequiredException) }
|
169
175
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#! /usr/bin/env ruby
|
2
2
|
#
|
3
3
|
# test version inference
|
4
4
|
|
@@ -44,6 +44,7 @@ class Test_Climate_parse_and_verify < Test::Unit::TestCase
|
|
44
44
|
assert_equal 0, r.flags.size
|
45
45
|
assert_equal 0, r.options.size
|
46
46
|
assert_equal 0, r.values.size
|
47
|
+
assert_nil r.double_slash_index
|
47
48
|
end
|
48
49
|
|
49
50
|
def test_one_flag_with_block
|
@@ -77,6 +78,7 @@ class Test_Climate_parse_and_verify < Test::Unit::TestCase
|
|
77
78
|
assert_equal 1, r.flags.size
|
78
79
|
assert_equal 0, r.options.size
|
79
80
|
assert_equal 0, r.values.size
|
81
|
+
assert_nil r.double_slash_index
|
80
82
|
|
81
83
|
flag0 = r.flags[0]
|
82
84
|
|
@@ -119,6 +121,7 @@ class Test_Climate_parse_and_verify < Test::Unit::TestCase
|
|
119
121
|
assert_equal 0, r.flags.size
|
120
122
|
assert_equal 1, r.options.size
|
121
123
|
assert_equal 0, r.values.size
|
124
|
+
assert_nil r.double_slash_index
|
122
125
|
|
123
126
|
option0 = r.options[0]
|
124
127
|
|
data/test/unit/tc_values.rb
CHANGED
data/test/unit/tc_with_blocks.rb
CHANGED
data/test/unit/ts_all.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libclimate-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wilson
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clasp-ruby
|
@@ -16,20 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 0.22.1
|
19
|
+
version: '0.23'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0.
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.22.1
|
26
|
+
version: '0.23'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: xqsr3
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,7 +33,7 @@ dependencies:
|
|
39
33
|
version: '0.37'
|
40
34
|
- - ">="
|
41
35
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.37.
|
36
|
+
version: 0.37.3
|
43
37
|
type: :runtime
|
44
38
|
prerelease: false
|
45
39
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,7 +43,7 @@ dependencies:
|
|
49
43
|
version: '0.37'
|
50
44
|
- - ">="
|
51
45
|
- !ruby/object:Gem::Version
|
52
|
-
version: 0.37.
|
46
|
+
version: 0.37.3
|
53
47
|
description: |
|
54
48
|
libCLImate is a portable, lightweight mini-framework that encapsulates the common aspects of Command-Line Interface boilerplate, including:
|
55
49
|
|
@@ -79,6 +73,7 @@ files:
|
|
79
73
|
- test/scratch/blankzeroes.rb
|
80
74
|
- test/scratch/specifications.rb
|
81
75
|
- test/unit/tc_abort.rb
|
76
|
+
- test/unit/tc_double_slash_index.rb
|
82
77
|
- test/unit/tc_infer_version.rb
|
83
78
|
- test/unit/tc_minimal.rb
|
84
79
|
- test/unit/tc_minimal_CLASP.rb
|
@@ -93,23 +88,26 @@ homepage: https://github.com/synesissoftware/libCLImate.Ruby
|
|
93
88
|
licenses:
|
94
89
|
- BSD-3-Clause
|
95
90
|
metadata: {}
|
96
|
-
post_install_message:
|
91
|
+
post_install_message:
|
97
92
|
rdoc_options: []
|
98
93
|
require_paths:
|
99
94
|
- lib
|
100
95
|
required_ruby_version: !ruby/object:Gem::Requirement
|
101
96
|
requirements:
|
102
|
-
- - "
|
97
|
+
- - ">="
|
103
98
|
- !ruby/object:Gem::Version
|
104
99
|
version: '2.0'
|
100
|
+
- - "<"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '4'
|
105
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
104
|
requirements:
|
107
105
|
- - ">="
|
108
106
|
- !ruby/object:Gem::Version
|
109
107
|
version: '0'
|
110
108
|
requirements: []
|
111
|
-
rubygems_version: 3.
|
112
|
-
signing_key:
|
109
|
+
rubygems_version: 3.1.6
|
110
|
+
signing_key:
|
113
111
|
specification_version: 4
|
114
112
|
summary: libCLImate.Ruby
|
115
113
|
test_files: []
|