clasp-ruby 0.23.0.1 → 0.23.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +63 -52
- data/examples/cr-example.rb +16 -16
- data/examples/flag_and_option_specifications.md +25 -25
- data/examples/flag_and_option_specifications.rb +6 -6
- data/examples/show_usage_and_version.md +5 -5
- data/examples/show_usage_and_version.rb +1 -1
- data/examples/simple_command_line_no_specifications.rb +1 -1
- data/lib/clasp/arguments.rb +538 -537
- data/lib/clasp/clasp.rb +7 -7
- data/lib/clasp/cli.rb +140 -135
- data/lib/clasp/doc_.rb +3 -3
- data/lib/clasp/old_module.rb +3 -3
- data/lib/clasp/specifications.rb +337 -333
- data/lib/clasp/util/exceptions.rb +17 -17
- data/lib/clasp/util/value_parser.rb +97 -97
- data/lib/clasp/version.rb +15 -15
- data/lib/clasp-ruby.rb +3 -2
- data/lib/clasp.rb +3 -2
- data/test/scratch/test_list_command_line.rb +6 -6
- data/test/scratch/test_specifications.rb +14 -14
- data/test/scratch/test_usage.rb +6 -6
- data/test/scratch/test_usage_from_DATA.rb +1 -1
- data/test/scratch/test_usage_with_duplicate_specifications.rb +6 -6
- data/test/unit/tc_ARGV_rewrite.rb +36 -38
- data/test/unit/tc_arguments_1.rb +694 -694
- data/test/unit/tc_arguments_2.rb +52 -53
- data/test/unit/tc_arguments_3.rb +77 -77
- data/test/unit/tc_arguments_inspect.rb +55 -56
- data/test/unit/tc_cli.rb +4 -4
- data/test/unit/tc_default_value.rb +91 -91
- data/test/unit/tc_defaults_1.rb +38 -38
- data/test/unit/tc_examples_Arguments.rb +130 -132
- data/test/unit/tc_extras.rb +24 -26
- data/test/unit/tc_option_required.rb +38 -39
- data/test/unit/tc_option_value_aliases.rb +44 -44
- data/test/unit/tc_specifications.rb +7 -8
- data/test/unit/tc_typed_options.rb +204 -204
- data/test/unit/tc_usage.rb +112 -55
- data/test/unit/tc_with_action.rb +23 -24
- data/test/unit/ts_all.rb +1 -1
- metadata +5 -4
data/test/unit/tc_arguments_2.rb
CHANGED
@@ -8,58 +8,57 @@ require 'test/unit'
|
|
8
8
|
|
9
9
|
class Test_Arguments_2 < Test::Unit::TestCase
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
11
|
+
def test_combined_flags_0
|
12
|
+
|
13
|
+
specifications = [
|
14
|
+
]
|
15
|
+
args = CLASP::Arguments.new [ '-abc' ], specifications
|
16
|
+
|
17
|
+
assert_equal 1, args.flags.size
|
18
|
+
assert_equal '-abc', args.flags[0].name
|
19
|
+
assert_equal '-abc', args.flags[0].to_s
|
20
|
+
assert_equal 'abc', args.flags[0].given_label
|
21
|
+
assert_equal 1, args.flags[0].given_hyphens
|
22
|
+
assert_nil args.flags[0].argument_specification
|
23
|
+
assert_equal Hash.new, args.flags[0].extras
|
24
|
+
|
25
|
+
assert_equal 0, args.options.size
|
26
|
+
|
27
|
+
assert_equal 0, args.values.size
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_combined_flags_1
|
31
|
+
|
32
|
+
specifications = [
|
33
|
+
CLASP.Flag('--a', alias: '-a'),
|
34
|
+
CLASP.Flag('--b', alias: '-b'),
|
35
|
+
CLASP.Flag('--c', alias: '-c'),
|
36
|
+
]
|
37
|
+
args = CLASP::Arguments.new [ '-abc' ], specifications
|
38
|
+
|
39
|
+
assert_equal 3, args.flags.size
|
40
|
+
assert_equal '--a', args.flags[0].name
|
41
|
+
assert_equal '--a', args.flags[0].to_s
|
42
|
+
assert_equal 'abc', args.flags[0].given_label
|
43
|
+
assert_equal 1, args.flags[0].given_hyphens
|
44
|
+
assert_equal specifications[0], args.flags[0].argument_specification
|
45
|
+
assert_equal Hash.new, args.flags[0].extras
|
46
|
+
assert_equal '--b', args.flags[1].name
|
47
|
+
assert_equal '--b', args.flags[1].to_s
|
48
|
+
assert_equal 'abc', args.flags[1].given_label
|
49
|
+
assert_equal 1, args.flags[1].given_hyphens
|
50
|
+
assert_equal specifications[1], args.flags[1].argument_specification
|
51
|
+
assert_equal Hash.new, args.flags[1].extras
|
52
|
+
assert_equal '--c', args.flags[2].name
|
53
|
+
assert_equal '--c', args.flags[2].to_s
|
54
|
+
assert_equal 'abc', args.flags[2].given_label
|
55
|
+
assert_equal 1, args.flags[2].given_hyphens
|
56
|
+
assert_equal specifications[2], args.flags[2].argument_specification
|
57
|
+
assert_equal Hash.new, args.flags[2].extras
|
58
|
+
|
59
|
+
assert_equal 0, args.options.size
|
60
|
+
|
61
|
+
assert_equal 0, args.values.size
|
62
|
+
end
|
63
63
|
end
|
64
64
|
|
65
|
-
|
data/test/unit/tc_arguments_3.rb
CHANGED
@@ -8,82 +8,82 @@ require 'test/unit'
|
|
8
8
|
|
9
9
|
class Test_Arguments_3 < Test::Unit::TestCase
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
11
|
+
def test_include_flag_1
|
12
|
+
|
13
|
+
args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], nil
|
14
|
+
|
15
|
+
assert args.flags.include? '-f1'
|
16
|
+
assert not(args.flags.include? '-f2')
|
17
|
+
assert args.flags.include? '--flag2'
|
18
|
+
assert not(args.flags.include? '--option1')
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_include_flag_2
|
22
|
+
|
23
|
+
aliases = [
|
24
|
+
CLASP.Flag('--flag1', alias: '-f1'),
|
25
|
+
]
|
26
|
+
args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], aliases
|
27
|
+
|
28
|
+
assert args.flags.include? '-f1'
|
29
|
+
assert args.flags.include? '--flag1'
|
30
|
+
assert not(args.flags.include? '-f2')
|
31
|
+
assert args.flags.include? '--flag2'
|
32
|
+
assert not(args.flags.include? '--option1')
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_combined_flags_1
|
36
|
+
|
37
|
+
aliases = [
|
38
|
+
CLASP.Flag('--delete', alias: '-d'),
|
39
|
+
CLASP.Flag('--update', alias: '-u'),
|
40
|
+
]
|
41
|
+
args = CLASP::Arguments.new [ '-du' ], aliases
|
42
|
+
|
43
|
+
assert args.flags.include? '--delete'
|
44
|
+
assert args.flags.include? '--update'
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_get_option_1
|
48
|
+
|
49
|
+
args = CLASP::Arguments.new [ '-f1', 'value1', '--option1=value1', '--flag2' ], nil
|
50
|
+
|
51
|
+
assert args.options.include? '--option1'
|
52
|
+
assert not(args.options.include? '--option1=value1')
|
53
|
+
assert not(args.options.include? '-f1')
|
54
|
+
assert not(args.options.include? '--flag2')
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_get_option_2
|
58
|
+
|
59
|
+
aliases = [
|
60
|
+
CLASP.Flag('--flag1', alias: '-f1'),
|
61
|
+
CLASP.Option('--option1', alias: '-o1'),
|
62
|
+
]
|
63
|
+
args = CLASP::Arguments.new [ '-f1', 'value1', '-o1=value1', '--flag2' ], aliases
|
64
|
+
|
65
|
+
assert args.options.include? '-o1'
|
66
|
+
assert args.options.include? '--option1'
|
67
|
+
assert not(args.options.include? '--option1=value1')
|
68
|
+
assert not(args.options.include? '-f1')
|
69
|
+
assert not(args.options.include? '--flag2')
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_combined_flags_and_options_1
|
73
|
+
|
74
|
+
aliases = [
|
75
|
+
CLASP.Flag('--delete', alias: '-d'),
|
76
|
+
CLASP.Flag('--update', alias: '-u'),
|
77
|
+
CLASP.Option('--encryption', alias: '-e'),
|
78
|
+
CLASP.Option('--encryption=blowfish', alias: '-b'),
|
79
|
+
]
|
80
|
+
args = CLASP::Arguments.new [ '-du', '-e', 'sha' ], aliases
|
81
|
+
|
82
|
+
assert args.flags.include? '--delete'
|
83
|
+
assert args.flags.include? '--update'
|
84
|
+
assert args.options.include? '--encryption'
|
85
|
+
assert_not_nil args.options.detect { |o| o == '--encryption' }
|
86
|
+
assert_nil args.options.detect { |o| o == '--blah' }
|
87
|
+
end
|
88
88
|
end
|
89
89
|
|
@@ -8,88 +8,87 @@ require 'test/unit'
|
|
8
8
|
|
9
9
|
class Test_Arguments_inspect_and_to_s < Test::Unit::TestCase
|
10
10
|
|
11
|
-
|
11
|
+
include CLASP
|
12
12
|
|
13
|
-
|
13
|
+
def test_no_arguments
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
argv = []
|
16
|
+
args = Arguments.new argv
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
assert_equal %Q<[]>, args.flags.to_s
|
19
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.flags.inspect
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
assert_equal %Q<[]>, args.options.to_s
|
22
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
assert_equal %Q<[]>, args.values.to_s
|
25
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.values.inspect
|
26
|
+
end
|
27
27
|
|
28
|
-
|
28
|
+
def test_one_value
|
29
29
|
|
30
|
-
|
31
|
-
|
30
|
+
argv = [ 'val1' ]
|
31
|
+
args = Arguments.new argv
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
assert_equal %Q<[]>, args.flags.to_s
|
34
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.flags.inspect
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
assert_equal %Q<[]>, args.options.to_s
|
37
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
assert_equal %Q<["val1"]>, args.values.to_s
|
40
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\["val1"\].*>/, args.values.inspect
|
41
|
+
end
|
42
42
|
|
43
|
-
|
43
|
+
def test_three_values
|
44
44
|
|
45
|
-
|
46
|
-
|
45
|
+
argv = [ 'val1', 'val2', 'val3' ]
|
46
|
+
args = Arguments.new argv
|
47
47
|
|
48
|
-
|
49
|
-
|
48
|
+
assert_equal %Q<[]>, args.flags.to_s
|
49
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.flags.inspect
|
50
50
|
|
51
|
-
|
52
|
-
|
51
|
+
assert_equal %Q<[]>, args.options.to_s
|
52
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
assert_equal %Q<["val1", "val2", "val3"]>, args.values.to_s
|
55
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\["val1", "val2", "val3"\].*>/, args.values.inspect
|
56
|
+
end
|
57
57
|
|
58
|
-
|
58
|
+
def test_one_flag
|
59
59
|
|
60
|
-
|
61
|
-
|
60
|
+
argv = [ '-f' ]
|
61
|
+
args = Arguments.new argv
|
62
62
|
|
63
|
-
|
64
|
-
|
63
|
+
assert_equal %Q<["-f"]>, args.flags.to_s
|
64
|
+
if RUBY_VERSION >= '2'
|
65
65
|
|
66
|
-
|
67
|
-
|
66
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[#<CLASP::Arguments::FlagArgument:0x.*-f.*>\].*>/, args.flags.inspect
|
67
|
+
end
|
68
68
|
|
69
|
-
|
70
|
-
|
69
|
+
assert_equal %Q<[]>, args.options.to_s
|
70
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
assert_equal %Q<[]>, args.values.to_s
|
73
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.values.inspect
|
74
|
+
end
|
75
75
|
|
76
|
-
|
76
|
+
def test_two_flags
|
77
77
|
|
78
|
-
|
79
|
-
|
78
|
+
argv = [ '-f', '-g' ]
|
79
|
+
args = Arguments.new argv
|
80
80
|
|
81
|
-
|
82
|
-
|
81
|
+
assert_equal %Q<["-f", "-g"]>, args.flags.to_s
|
82
|
+
if RUBY_VERSION >= '2'
|
83
83
|
|
84
|
-
|
85
|
-
|
84
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[#<CLASP::Arguments::FlagArgument:0x.*-f.*-g.*>\].*>/, args.flags.inspect
|
85
|
+
end
|
86
86
|
|
87
|
-
|
88
|
-
|
87
|
+
assert_equal %Q<[]>, args.options.to_s
|
88
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.options.inspect
|
89
89
|
|
90
|
-
|
91
|
-
|
92
|
-
|
90
|
+
assert_equal %Q<[]>, args.values.to_s
|
91
|
+
assert_match /#<Array:0x[0-9a-fA-Z]+\s+\[\].*>/, args.values.inspect
|
92
|
+
end
|
93
93
|
end
|
94
94
|
|
95
|
-
|
data/test/unit/tc_cli.rb
CHANGED
@@ -14,12 +14,12 @@ require 'stringio'
|
|
14
14
|
|
15
15
|
class Test_CLI < Test::Unit::TestCase
|
16
16
|
|
17
|
-
|
17
|
+
def test_invalid_aliases_types
|
18
18
|
|
19
|
-
|
19
|
+
assert_raise_with_message(::TypeError, /each element in (?:aliases|specifications) array must be one of the types CLASP::FlagSpecification, CLASP::OptionSpecification, or CLASP::AliasSpecification/) { CLASP.show_usage([ 'abc', :def ]) }
|
20
20
|
|
21
|
-
|
22
|
-
|
21
|
+
assert_raise_with_message(::TypeError, /each element in (?:aliases|specifications) array must be one of the types CLASP::FlagSpecification, CLASP::OptionSpecification, or CLASP::AliasSpecification/) { CLASP.show_version([ 'abc', :def ]) }
|
22
|
+
end
|
23
23
|
end
|
24
24
|
|
25
25
|
end # RUBY_VERSION
|