libclimate-ruby 0.16.0.1 → 0.17.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 +4 -4
- data/lib/libclimate/climate.rb +49 -15
- data/lib/libclimate/libclimate.rb +7 -6
- data/lib/libclimate/version.rb +8 -8
- data/test/unit/tc_values.rb +62 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93f46385f402db50a58439b942019ed126dd63473b62a26e838891bc0df15fb1
|
4
|
+
data.tar.gz: b38cc0a266ca7aea7ff3bef2e5532c99b92cf4fe5a6cacd2ddd48d98f61451ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8676f6ed6c9ad75d9fa713139e825a3f3fb3e757a8b5d416995b8989b160a32e2c16f2ecb1b3b79d32f12bcc325073be42bfeb867bdb47f314c53f1444e22bae
|
7
|
+
data.tar.gz: 1cc2874f4963d361c6e756a314508787baf7fafc0a5175c9174a6b4efc5dcd89e469f1f89c855d302e6d4e14cc36e2f954aea6c9c74e491e34d7a2985b4860ce
|
data/lib/libclimate/climate.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
|
2
2
|
# ######################################################################## #
|
3
|
-
# File:
|
3
|
+
# File: lib/libclimate/climate.rb
|
4
4
|
#
|
5
|
-
# Purpose:
|
5
|
+
# Purpose: Definition of the ::LibCLImate::Climate class
|
6
6
|
#
|
7
|
-
# Created:
|
8
|
-
# Updated:
|
7
|
+
# Created: 13th July 2015
|
8
|
+
# Updated: 10th August 2024
|
9
9
|
#
|
10
|
-
# Home:
|
10
|
+
# Home: http://github.com/synesissoftware/libCLImate.Ruby
|
11
11
|
#
|
12
|
-
# Author:
|
12
|
+
# Author: Matthew Wilson
|
13
13
|
#
|
14
|
-
# Copyright (c) 2019-
|
14
|
+
# Copyright (c) 2019-2024, Matthew Wilson and Synesis Information Systems
|
15
15
|
# Copyright (c) 2015-2019, Matthew Wilson and Synesis Software
|
16
16
|
# All rights reserved.
|
17
17
|
#
|
@@ -144,7 +144,7 @@ module LibCLImate
|
|
144
144
|
#
|
145
145
|
# program_options = {}
|
146
146
|
#
|
147
|
-
# climate = LibCLImate::Climate.new do |cl|
|
147
|
+
# climate = LibCLImate::Climate.new(value_attributes: true) do |cl|
|
148
148
|
#
|
149
149
|
# cl.add_flag('--verbose', alias: '-v', help: 'Makes program output verbose') { program_options[:verbose] = true }
|
150
150
|
#
|
@@ -153,8 +153,9 @@ module LibCLImate
|
|
153
153
|
# program_options[:flavour] = check_flavour(o.value) or cl.abort "Invalid flavour '#{o.value}'; use --help for usage"
|
154
154
|
# end
|
155
155
|
#
|
156
|
-
# cl.usage_values = '<
|
157
|
-
# cl.constrain_values = 1..
|
156
|
+
# cl.usage_values = '<source-path> [ <destination-path> ]'
|
157
|
+
# cl.constrain_values = 1..2
|
158
|
+
# cl.value_names = %w{ source-path destination-path }
|
158
159
|
#
|
159
160
|
# cl.info_lines = [
|
160
161
|
#
|
@@ -164,6 +165,10 @@ module LibCLImate
|
|
164
165
|
# ]
|
165
166
|
# end
|
166
167
|
#
|
168
|
+
# r = climate.run ARGV
|
169
|
+
#
|
170
|
+
# puts "copying from '#{r.source_path}' to '#{r.destination_path || '.'}'"
|
171
|
+
#
|
167
172
|
class Climate
|
168
173
|
|
169
174
|
include ::Xqsr3::Quality::ParameterChecking
|
@@ -789,6 +794,7 @@ class Climate
|
|
789
794
|
# - +:no_help_flag+ (boolean) Prevents the use of the +CLASP::Flag.Help+ flag-specification
|
790
795
|
# - +:no_version_flag+ (boolean) Prevents the use of the +CLASP::Flag.Version+ flag-specification
|
791
796
|
# - +:program_name+ (::String) An explicit program-name, which is inferred from +$0+ if this is +nil+
|
797
|
+
# - +:value_attributes+ (boolean) Causes any possible value-names, as described in `#value_names`, to be applied as attributes with the given values, if any, on the command-line
|
792
798
|
# - +:version+ (String, [Integer], [String]) A version specification. If not specified, this is inferred
|
793
799
|
# - +:version_context+ Object or class that defines a context for searching the version. Ignored if +:version+ is specified
|
794
800
|
#
|
@@ -830,6 +836,8 @@ class Climate
|
|
830
836
|
version_context = options[:version_context]
|
831
837
|
@version = options[:version] || infer_version_(version_context)
|
832
838
|
|
839
|
+
@value_attributes = options[:value_attributes]
|
840
|
+
|
833
841
|
unless options[:no_help_flag]
|
834
842
|
|
835
843
|
f = CLASP::Flag.Help()
|
@@ -929,7 +937,7 @@ class Climate
|
|
929
937
|
#
|
930
938
|
# === Returns
|
931
939
|
# (ParseResults) Results
|
932
|
-
def parse(argv = ARGV) # :yields: ParseResults
|
940
|
+
def parse(argv = ARGV, **options) # :yields: ParseResults
|
933
941
|
|
934
942
|
raise ArgumentError, "argv may not be nil" if argv.nil?
|
935
943
|
|
@@ -957,7 +965,7 @@ class Climate
|
|
957
965
|
# (ParseResults) Results
|
958
966
|
def parse_and_verify(argv = ARGV, **options) # :yields: ParseResults
|
959
967
|
|
960
|
-
r = parse argv
|
968
|
+
r = parse argv, **options
|
961
969
|
|
962
970
|
r.verify(**options)
|
963
971
|
|
@@ -976,17 +984,17 @@ class Climate
|
|
976
984
|
# an instance of a type derived from +::Hash+ with the additional
|
977
985
|
# attributes +flags+, +options+, +values+, +double_slash_index+ and
|
978
986
|
# +argv+.
|
979
|
-
def run(argv = ARGV) # :yields: customised +::Hash+
|
987
|
+
def run(argv = ARGV, **options) # :yields: customised +::Hash+
|
980
988
|
|
981
989
|
raise ArgumentError, "argv may not be nil" if argv.nil?
|
982
990
|
|
983
991
|
arguments = CLASP::Arguments.new argv, specifications
|
984
992
|
|
985
|
-
run_ argv, arguments
|
993
|
+
run_ argv, arguments, **options
|
986
994
|
end
|
987
995
|
|
988
996
|
private
|
989
|
-
def run_(argv, arguments) # :nodoc:
|
997
|
+
def run_(argv, arguments, **opts) # :nodoc:
|
990
998
|
|
991
999
|
flags = arguments.flags
|
992
1000
|
options = arguments.options
|
@@ -1154,6 +1162,31 @@ class Climate
|
|
1154
1162
|
argv
|
1155
1163
|
end
|
1156
1164
|
|
1165
|
+
|
1166
|
+
if opts[:value_attributes] || @value_attributes
|
1167
|
+
|
1168
|
+
(value_names || []).each_with_index do |name, index|
|
1169
|
+
|
1170
|
+
name = name.gsub(/-/, '_').to_sym
|
1171
|
+
|
1172
|
+
if results.respond_to? name
|
1173
|
+
|
1174
|
+
warn "cannot create attribute `#{name}` on instance of `#{results.class}` because that name is already used"
|
1175
|
+
else
|
1176
|
+
|
1177
|
+
value = results.values[index]
|
1178
|
+
|
1179
|
+
results.define_singleton_method(name) do
|
1180
|
+
|
1181
|
+
value
|
1182
|
+
end
|
1183
|
+
end
|
1184
|
+
end
|
1185
|
+
end
|
1186
|
+
|
1187
|
+
|
1188
|
+
results.freeze
|
1189
|
+
|
1157
1190
|
results
|
1158
1191
|
end
|
1159
1192
|
public
|
@@ -1396,6 +1429,7 @@ class Climate
|
|
1396
1429
|
end # class Climate
|
1397
1430
|
end # module LibCLImate
|
1398
1431
|
|
1432
|
+
|
1399
1433
|
# ############################## end of file ############################# #
|
1400
1434
|
|
1401
1435
|
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# ######################################################################## #
|
2
|
-
# File:
|
2
|
+
# File: libclimate/libclimate.rb
|
3
3
|
#
|
4
|
-
# Purpose:
|
4
|
+
# Purpose: Main file for libclimate.Ruby library
|
5
5
|
#
|
6
|
-
# Created:
|
7
|
-
# Updated:
|
6
|
+
# Created: 13th July 2015
|
7
|
+
# Updated: 10th August 2024
|
8
8
|
#
|
9
|
-
# Home:
|
9
|
+
# Home: http://github.com/synesissoftware/libCLImate.Ruby
|
10
10
|
#
|
11
|
-
# Copyright (c) 2015-
|
11
|
+
# Copyright (c) 2015-2024, Matthew Wilson and Synesis Software
|
12
12
|
# All rights reserved.
|
13
13
|
#
|
14
14
|
# Redistribution and use in source and binary forms, with or without
|
@@ -50,6 +50,7 @@ require 'libclimate/version'
|
|
50
50
|
module LibCLImate
|
51
51
|
end # module LibCLImate
|
52
52
|
|
53
|
+
|
53
54
|
# ############################## end of file ############################# #
|
54
55
|
|
55
56
|
|
data/lib/libclimate/version.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# ######################################################################## #
|
2
|
-
# File:
|
2
|
+
# File: libclimate/version.rb
|
3
3
|
#
|
4
|
-
# Purpose:
|
4
|
+
# Purpose: Version for libclimate.Ruby library
|
5
5
|
#
|
6
|
-
# Created:
|
7
|
-
# Updated:
|
6
|
+
# Created: 13th July 2015
|
7
|
+
# Updated: 10th August 2024
|
8
8
|
#
|
9
|
-
# Home:
|
9
|
+
# Home: http://github.com/synesissoftware/libCLImate.Ruby
|
10
10
|
#
|
11
|
-
# Copyright (c) 2019-
|
11
|
+
# Copyright (c) 2019-2024, Matthew Wilson and Synesis Information Systems
|
12
12
|
# Copyright (c) 2015-2019, Matthew Wilson and Synesis Software
|
13
13
|
# All rights reserved.
|
14
14
|
#
|
@@ -44,7 +44,7 @@
|
|
44
44
|
module LibCLImate
|
45
45
|
|
46
46
|
# Current version of the libCLImate.Ruby library
|
47
|
-
VERSION = '0.
|
47
|
+
VERSION = '0.17.0'
|
48
48
|
|
49
49
|
private
|
50
50
|
VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
|
@@ -55,9 +55,9 @@ module LibCLImate
|
|
55
55
|
VERSION_MINOR = VERSION_PARTS_[1] # :nodoc:
|
56
56
|
# # Revision version of the libCLImate.Ruby library
|
57
57
|
VERSION_REVISION = VERSION_PARTS_[2] # :nodoc:
|
58
|
-
|
59
58
|
end # module LibCLImate
|
60
59
|
|
60
|
+
|
61
61
|
# ############################## end of file ############################# #
|
62
62
|
|
63
63
|
|
data/test/unit/tc_values.rb
CHANGED
@@ -92,7 +92,7 @@ class Test_Climate_values_constraints < Test::Unit::TestCase
|
|
92
92
|
stdout = StringIO.new
|
93
93
|
stderr = StringIO.new
|
94
94
|
|
95
|
-
climate = LibCLImate::Climate.new do |cl|
|
95
|
+
climate = LibCLImate::Climate.new(value_attributes: true) do |cl|
|
96
96
|
|
97
97
|
cl.exit_on_missing = false
|
98
98
|
|
@@ -129,6 +129,67 @@ class Test_Climate_values_constraints < Test::Unit::TestCase
|
|
129
129
|
assert_equal 2, r.values.size
|
130
130
|
assert_empty stdout.string
|
131
131
|
assert_empty stderr.string
|
132
|
+
assert r.respond_to? :input_path
|
133
|
+
assert r.respond_to? :output_path
|
134
|
+
|
135
|
+
stdout.string = ''
|
136
|
+
stderr.string = ''
|
137
|
+
r = climate.run [ 'value-1', 'value-2', 'value-3' ]
|
138
|
+
assert_equal 3, r.values.size
|
139
|
+
assert_empty stdout.string
|
140
|
+
assert_not_empty stderr.string
|
141
|
+
assert_match /wrong number of values.*3 given.*2 required.*/, stderr.string
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_constrain_with_integer_and_names_2
|
145
|
+
|
146
|
+
stdout = StringIO.new
|
147
|
+
stderr = StringIO.new
|
148
|
+
|
149
|
+
climate = LibCLImate::Climate.new(value_attributes: true) do |cl|
|
150
|
+
|
151
|
+
cl.exit_on_missing = false
|
152
|
+
|
153
|
+
cl.stdout = stdout
|
154
|
+
cl.stderr = stderr
|
155
|
+
|
156
|
+
cl.constrain_values = 1..2
|
157
|
+
cl.value_names = [
|
158
|
+
|
159
|
+
'input-path',
|
160
|
+
'output-path',
|
161
|
+
]
|
162
|
+
end
|
163
|
+
|
164
|
+
stdout.string = ''
|
165
|
+
stderr.string = ''
|
166
|
+
r = climate.run [ ]
|
167
|
+
assert_equal 0, r.values.size
|
168
|
+
assert_empty stdout.string
|
169
|
+
assert_not_empty stderr.string
|
170
|
+
assert_match /input-path not specified.*#{climate.usage_help_suffix}/, stderr.string
|
171
|
+
|
172
|
+
stdout.string = ''
|
173
|
+
stderr.string = ''
|
174
|
+
r = climate.run [ 'value-1' ]
|
175
|
+
assert_equal 1, r.values.size
|
176
|
+
assert_empty stdout.string
|
177
|
+
assert_empty stderr.string
|
178
|
+
assert r.respond_to? :input_path
|
179
|
+
assert r.respond_to? :output_path
|
180
|
+
assert_equal 'value-1', r.input_path
|
181
|
+
assert_nil r.output_path
|
182
|
+
|
183
|
+
stdout.string = ''
|
184
|
+
stderr.string = ''
|
185
|
+
r = climate.run [ 'value-1', 'value-2' ]
|
186
|
+
assert_equal 2, r.values.size
|
187
|
+
assert_empty stdout.string
|
188
|
+
assert_empty stderr.string
|
189
|
+
assert r.respond_to? :input_path
|
190
|
+
assert r.respond_to? :output_path
|
191
|
+
assert_equal 'value-1', r.input_path
|
192
|
+
assert_equal 'value-2', r.output_path
|
132
193
|
|
133
194
|
stdout.string = ''
|
134
195
|
stderr.string = ''
|
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.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clasp-ruby
|
@@ -17,6 +17,9 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0.23'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.23.0.2
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -24,26 +27,23 @@ dependencies:
|
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '0.23'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.23.0.2
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: xqsr3
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 0.37.3
|
39
|
+
version: '0.39'
|
37
40
|
type: :runtime
|
38
41
|
prerelease: false
|
39
42
|
version_requirements: !ruby/object:Gem::Requirement
|
40
43
|
requirements:
|
41
44
|
- - "~>"
|
42
45
|
- !ruby/object:Gem::Version
|
43
|
-
version: '0.
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 0.37.3
|
46
|
+
version: '0.39'
|
47
47
|
description: |
|
48
48
|
libCLImate is a portable, lightweight mini-framework that encapsulates the common aspects of Command-Line Interface boilerplate, including:
|
49
49
|
|