libclimate-ruby 0.14.0 → 0.15.2

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.
@@ -4,11 +4,11 @@
4
4
  # Purpose: Version for libclimate.Ruby library
5
5
  #
6
6
  # Created: 13th July 2015
7
- # Updated: 15th April 2019
7
+ # Updated: 26th June 2022
8
8
  #
9
9
  # Home: http://github.com/synesissoftware/libCLImate.Ruby
10
10
  #
11
- # Copyright (c) 2015-2019, Matthew Wilson and Synesis Software
11
+ # Copyright (c) 2015-2022, 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
@@ -43,7 +43,7 @@
43
43
  module LibCLImate
44
44
 
45
45
  # Current version of the libCLImate.Ruby library
46
- VERSION = '0.14.0'
46
+ VERSION = '0.15.2'
47
47
 
48
48
  private
49
49
  VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i } # :nodoc:
@@ -250,7 +250,7 @@ class Test_Climate_minimal < Test::Unit::TestCase
250
250
  bl = false#proc { is_verbose = true }
251
251
 
252
252
  cl.add_flag('--succinct', alias: '-s', help: 'operates succinctly')
253
- cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely', extras: { :handle => proc { is_verbose = true }})
253
+ cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely') { is_verbose = true }
254
254
  end
255
255
 
256
256
  argv = %w{ --help --verbose --succinct }
@@ -308,7 +308,7 @@ class Test_Climate_minimal < Test::Unit::TestCase
308
308
  cl.stdout = str
309
309
  cl.exit_on_usage = false
310
310
 
311
- cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely', extras: { handle: proc { is_verbose = true }})
311
+ cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely') { is_verbose = true }
312
312
  end
313
313
 
314
314
  argv = %w{ --verbose }
@@ -353,7 +353,7 @@ class Test_Climate_minimal < Test::Unit::TestCase
353
353
  cl.stdout = str
354
354
  cl.exit_on_usage = false
355
355
 
356
- cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', extras: { handle: proc { |o| verbosity = o.value }})
356
+ cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation') { |o| verbosity = o.value }
357
357
  end
358
358
 
359
359
  argv = %w{ -v 2 }
@@ -222,7 +222,7 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
222
222
  cl.exit_on_usage = false
223
223
 
224
224
  cl.add_flag('--succinct', alias: '-s', help: 'operates succinctly')
225
- cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely', extras: { :handle => proc { is_verbose = true }})
225
+ cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely') { is_verbose = true }
226
226
  end
227
227
 
228
228
  argv = %w{ --help --verbose --succinct }
@@ -279,7 +279,7 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
279
279
  cl.stdout = str
280
280
  cl.exit_on_usage = false
281
281
 
282
- cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely', extras: { handle: proc { is_verbose = true }})
282
+ cl.add_flag('--verbose', alias: '-v', help: 'operates verbosely') { is_verbose = true }
283
283
  end
284
284
 
285
285
  argv = %w{ --verbose }
@@ -323,7 +323,7 @@ class Test_Climate_minimal_CLASP < Test::Unit::TestCase
323
323
  cl.stdout = str
324
324
  cl.exit_on_usage = false
325
325
 
326
- cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation', extras: { handle: proc { |o| verbosity = o.value }})
326
+ cl.add_option('--verbosity', alias: '-v', help: 'determines level of verbose operation') { |o| verbosity = o.value }
327
327
  end
328
328
 
329
329
  argv = %w{ -v 2 }
@@ -0,0 +1,171 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # test version inference
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_parse < Test::Unit::TestCase
17
+
18
+ class VerifyException < RuntimeError; end
19
+
20
+ class MissingRequiredException < VerifyException; end
21
+ class UnrecognisedArgumentException < VerifyException; end
22
+ class UnusedArgumentException < VerifyException; end
23
+
24
+ def test_empty_specs_empty_args
25
+
26
+ stdout = StringIO.new
27
+ stderr = StringIO.new
28
+
29
+ climate = LibCLImate::Climate.new do |cl|
30
+
31
+ cl.stdout = $stdout
32
+ cl.stderr = $stderr
33
+ end
34
+
35
+ assert $stdout.equal? climate.stdout
36
+ assert $stderr.equal? climate.stderr
37
+
38
+ argv = [
39
+ ]
40
+
41
+ r = climate.parse argv
42
+
43
+ assert_eql climate, r.climate
44
+ assert_equal 0, r.flags.size
45
+ assert_equal 0, r.options.size
46
+ assert_equal 0, r.values.size
47
+
48
+ r.verify()
49
+ end
50
+
51
+ def test_one_flag_with_block
52
+
53
+ stdout = StringIO.new
54
+ stderr = StringIO.new
55
+
56
+ debug = false
57
+
58
+ climate = LibCLImate::Climate.new do |cl|
59
+
60
+ cl.add_flag('--debug', alias: '-d') { debug = true }
61
+
62
+ cl.stdout = $stdout
63
+ cl.stderr = $stderr
64
+ end
65
+
66
+ assert $stdout.equal? climate.stdout
67
+ assert $stderr.equal? climate.stderr
68
+
69
+ argv = [
70
+
71
+ '-d',
72
+ ]
73
+
74
+ r = climate.parse argv
75
+
76
+ assert_false debug
77
+
78
+ assert_eql climate, r.climate
79
+ assert_equal 1, r.flags.size
80
+ assert_equal 0, r.options.size
81
+ assert_equal 0, r.values.size
82
+
83
+ flag0 = r.flags[0]
84
+
85
+ assert_equal '-d', flag0.given_name
86
+ assert_equal '--debug', flag0.name
87
+
88
+ r.verify()
89
+
90
+ assert_true debug
91
+ end
92
+
93
+ def test_one_option_with_block
94
+
95
+ stdout = StringIO.new
96
+ stderr = StringIO.new
97
+
98
+ verb = nil
99
+
100
+ climate = LibCLImate::Climate.new do |cl|
101
+
102
+ cl.add_option('--verbosity', alias: '-v') do |o, s|
103
+
104
+ verb = o.value
105
+ end
106
+
107
+ cl.stdout = $stdout
108
+ cl.stderr = $stderr
109
+ end
110
+
111
+ assert $stdout.equal? climate.stdout
112
+ assert $stderr.equal? climate.stderr
113
+
114
+ argv = [
115
+
116
+ '-v',
117
+ 'chatty',
118
+ ]
119
+
120
+ r = climate.parse argv
121
+
122
+ assert_nil verb
123
+
124
+ assert_eql climate, r.climate
125
+ assert_equal 0, r.flags.size
126
+ assert_equal 1, r.options.size
127
+ assert_equal 0, r.values.size
128
+
129
+ option0 = r.options[0]
130
+
131
+ assert_equal '-v', option0.given_name
132
+ assert_equal '--verbosity', option0.name
133
+
134
+ r.verify()
135
+
136
+ assert_equal 'chatty', verb
137
+ end
138
+
139
+ def test_one_required_flag_that_is_missing
140
+
141
+ stdout = StringIO.new
142
+ stderr = StringIO.new
143
+
144
+ climate = LibCLImate::Climate.new do |cl|
145
+
146
+ cl.add_option('--verbosity', alias: '-v', required: true) do |o, s|
147
+
148
+ verb = o.value
149
+ end
150
+
151
+ cl.stdout = $stdout
152
+ cl.stderr = $stderr
153
+ end
154
+
155
+ assert $stdout.equal? climate.stdout
156
+ assert $stderr.equal? climate.stderr
157
+
158
+ argv = [
159
+ ]
160
+
161
+ r = climate.parse argv
162
+
163
+ assert_eql climate, r.climate
164
+ assert_equal 0, r.flags.size
165
+ assert_equal 0, r.options.size
166
+ assert_equal 0, r.values.size
167
+
168
+ assert_raise_with_message(MissingRequiredException, /.*verbosity.*not specified/) { r.verify(raise_on_required: MissingRequiredException) }
169
+ end
170
+ end
171
+
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # test version inference
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_parse_and_verify < Test::Unit::TestCase
17
+
18
+ class VerifyException < RuntimeError; end
19
+
20
+ class MissingRequiredException < VerifyException; end
21
+ class UnrecognisedArgumentException < VerifyException; end
22
+ class UnusedArgumentException < VerifyException; end
23
+
24
+ def test_empty_specs_empty_args
25
+
26
+ stdout = StringIO.new
27
+ stderr = StringIO.new
28
+
29
+ climate = LibCLImate::Climate.new do |cl|
30
+
31
+ cl.stdout = $stdout
32
+ cl.stderr = $stderr
33
+ end
34
+
35
+ assert $stdout.equal? climate.stdout
36
+ assert $stderr.equal? climate.stderr
37
+
38
+ argv = [
39
+ ]
40
+
41
+ r = climate.parse_and_verify argv
42
+
43
+ assert_eql climate, r.climate
44
+ assert_equal 0, r.flags.size
45
+ assert_equal 0, r.options.size
46
+ assert_equal 0, r.values.size
47
+ end
48
+
49
+ def test_one_flag_with_block
50
+
51
+ stdout = StringIO.new
52
+ stderr = StringIO.new
53
+
54
+ debug = false
55
+
56
+ climate = LibCLImate::Climate.new do |cl|
57
+
58
+ cl.add_flag('--debug', alias: '-d') { debug = true }
59
+
60
+ cl.stdout = $stdout
61
+ cl.stderr = $stderr
62
+ end
63
+
64
+ assert $stdout.equal? climate.stdout
65
+ assert $stderr.equal? climate.stderr
66
+
67
+ argv = [
68
+
69
+ '-d',
70
+ ]
71
+
72
+ r = climate.parse_and_verify argv
73
+
74
+ assert_true debug
75
+
76
+ assert_eql climate, r.climate
77
+ assert_equal 1, r.flags.size
78
+ assert_equal 0, r.options.size
79
+ assert_equal 0, r.values.size
80
+
81
+ flag0 = r.flags[0]
82
+
83
+ assert_equal '-d', flag0.given_name
84
+ assert_equal '--debug', flag0.name
85
+ end
86
+
87
+ def test_one_option_with_block
88
+
89
+ stdout = StringIO.new
90
+ stderr = StringIO.new
91
+
92
+ verb = nil
93
+
94
+ climate = LibCLImate::Climate.new do |cl|
95
+
96
+ cl.add_option('--verbosity', alias: '-v') do |o, s|
97
+
98
+ verb = o.value
99
+ end
100
+
101
+ cl.stdout = $stdout
102
+ cl.stderr = $stderr
103
+ end
104
+
105
+ assert $stdout.equal? climate.stdout
106
+ assert $stderr.equal? climate.stderr
107
+
108
+ argv = [
109
+
110
+ '-v',
111
+ 'chatty',
112
+ ]
113
+
114
+ r = climate.parse_and_verify argv
115
+
116
+ assert_equal 'chatty', verb
117
+
118
+ assert_eql climate, r.climate
119
+ assert_equal 0, r.flags.size
120
+ assert_equal 1, r.options.size
121
+ assert_equal 0, r.values.size
122
+
123
+ option0 = r.options[0]
124
+
125
+ assert_equal '-v', option0.given_name
126
+ assert_equal '--verbosity', option0.name
127
+ end
128
+
129
+ def test_one_required_flag_that_is_missing
130
+
131
+ stdout = StringIO.new
132
+ stderr = StringIO.new
133
+
134
+ climate = LibCLImate::Climate.new do |cl|
135
+
136
+ cl.add_option('--verbosity', alias: '-v', required: true) do |o, s|
137
+
138
+ verb = o.value
139
+ end
140
+
141
+ cl.stdout = $stdout
142
+ cl.stderr = $stderr
143
+ end
144
+
145
+ assert $stdout.equal? climate.stdout
146
+ assert $stderr.equal? climate.stderr
147
+
148
+ argv = [
149
+ ]
150
+
151
+ assert_raise_with_message(MissingRequiredException, /.*verbosity.*not specified/) do
152
+
153
+ climate.parse_and_verify argv, raise_on_required: MissingRequiredException
154
+ end
155
+ end
156
+ end
157
+
@@ -87,6 +87,58 @@ class Test_Climate_values_constraints < Test::Unit::TestCase
87
87
  assert_match /wrong number of values.*3 given.*2 required.*/, stderr.string
88
88
  end
89
89
 
90
+ def test_constrain_with_integer_and_names
91
+
92
+ stdout = StringIO.new
93
+ stderr = StringIO.new
94
+
95
+ climate = LibCLImate::Climate.new do |cl|
96
+
97
+ cl.exit_on_missing = false
98
+
99
+ cl.stdout = stdout
100
+ cl.stderr = stderr
101
+
102
+ cl.constrain_values = 2
103
+ cl.value_names = [
104
+
105
+ 'input-path',
106
+ 'output-path',
107
+ ]
108
+ end
109
+
110
+ stdout.string = ''
111
+ stderr.string = ''
112
+ r = climate.run [ ]
113
+ assert_equal 0, r.values.size
114
+ assert_empty stdout.string
115
+ assert_not_empty stderr.string
116
+ assert_match /input-path not specified.*#{climate.usage_help_suffix}/, stderr.string
117
+
118
+ stdout.string = ''
119
+ stderr.string = ''
120
+ r = climate.run [ 'value-1' ]
121
+ assert_equal 1, r.values.size
122
+ assert_empty stdout.string
123
+ assert_not_empty stderr.string
124
+ assert_match /output-path not specified.*#{climate.usage_help_suffix}/, stderr.string
125
+
126
+ stdout.string = ''
127
+ stderr.string = ''
128
+ r = climate.run [ 'value-1', 'value-2' ]
129
+ assert_equal 2, r.values.size
130
+ assert_empty stdout.string
131
+ assert_empty stderr.string
132
+
133
+ stdout.string = ''
134
+ stderr.string = ''
135
+ r = climate.run [ 'value-1', 'value-2', 'value-3' ]
136
+ assert_equal 3, r.values.size
137
+ assert_empty stdout.string
138
+ assert_not_empty stderr.string
139
+ assert_match /wrong number of values.*3 given.*2 required.*/, stderr.string
140
+ end
141
+
90
142
  def test_constrain_with_simple_range
91
143
 
92
144
  stdout = StringIO.new
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.14.0
4
+ version: 0.15.2
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: 2019-04-15 00:00:00.000000000 Z
11
+ date: 2022-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clasp-ruby
@@ -16,29 +16,49 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.19'
19
+ version: '0.22'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.22.1
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '0.19'
29
+ version: '0.22'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.22.1
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.31'
39
+ version: '0.37'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.37.2
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
47
  - - "~>"
39
48
  - !ruby/object:Gem::Version
40
- version: '0.31'
41
- description: "\n"
49
+ version: '0.37'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.37.2
53
+ description: |
54
+ libCLImate is a portable, lightweight mini-framework that encapsulates the common aspects of Command-Line Interface boilerplate, including:
55
+
56
+ - command-line argument parsing and sorting, into flags, options, and values;
57
+ - validating given and/or missing arguments;
58
+ - a declarative form of specifying the CLI elements for a program, including associating blocks with flag/option specifications;
59
+ - provision of de-facto standard CLI facilities, such as responding to '--help' and '--version';
60
+
61
+ libCLImate.Ruby is the Ruby version.
42
62
  email: matthew@synesis.com.au
43
63
  executables: []
44
64
  extensions: []
@@ -62,16 +82,18 @@ files:
62
82
  - test/unit/tc_infer_version.rb
63
83
  - test/unit/tc_minimal.rb
64
84
  - test/unit/tc_minimal_CLASP.rb
85
+ - test/unit/tc_parse.rb
86
+ - test/unit/tc_parse_and_verify.rb
65
87
  - test/unit/tc_test_specifications.rb
66
88
  - test/unit/tc_values.rb
67
89
  - test/unit/tc_with_blocks.rb
68
90
  - test/unit/tc_with_blocks_CLASP.rb
69
91
  - test/unit/ts_all.rb
70
- homepage: http://www.libclimate.org/
92
+ homepage: https://github.com/synesissoftware/libCLImate.Ruby
71
93
  licenses:
72
94
  - BSD-3-Clause
73
95
  metadata: {}
74
- post_install_message:
96
+ post_install_message:
75
97
  rdoc_options: []
76
98
  require_paths:
77
99
  - lib
@@ -86,9 +108,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
108
  - !ruby/object:Gem::Version
87
109
  version: '0'
88
110
  requirements: []
89
- rubyforge_project:
90
- rubygems_version: 2.7.6
91
- signing_key:
111
+ rubygems_version: 3.2.3
112
+ signing_key:
92
113
  specification_version: 4
93
114
  summary: libCLImate.Ruby
94
115
  test_files: []