Skip to content

Commit ec78c3d

Browse files
committed
allow default as string with repeatable
1 parent 836b2ce commit ec78c3d

File tree

10 files changed

+22
-37
lines changed

10 files changed

+22
-37
lines changed

examples/repeatable-arg/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ args:
3636
# Setting unique to true will ignore non-unique repeating values.
3737
unique: true
3838

39-
# Setting default value(s) for a repeatable argument should be done in an
40-
# array form.
39+
# Setting default value(s) for a repeatable argument may be done in an array
40+
# form (or a string form if it is a single default value only).
4141
default:
4242
- file1
4343
- file2

examples/repeatable-arg/src/bashly.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ args:
1515
# Setting unique to true will ignore non-unique repeating values.
1616
unique: true
1717

18-
# Setting default value(s) for a repeatable argument should be done in an
19-
# array form.
18+
# Setting default value(s) for a repeatable argument may be done in an array
19+
# form (or a string form if it is a single default value only).
2020
default:
2121
- file1
2222
- file2

examples/repeatable-flag/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ flags:
4444
# Setting this to true will ignore repeating arguments that are not unique.
4545
unique: true
4646

47-
# Setting default value(s) for a repeatable flag argument should be done in
48-
# an array form.
47+
# Setting default value(s) for a repeatable flag argument may be done in an
48+
# array form (or a string form if it is a single default value only).
4949
default:
5050
- file one
5151
- file-two

examples/repeatable-flag/src/bashly.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ flags:
2323
# Setting this to true will ignore repeating arguments that are not unique.
2424
unique: true
2525

26-
# Setting default value(s) for a repeatable flag argument should be done in
27-
# an array form.
26+
# Setting default value(s) for a repeatable flag argument may be done in an
27+
# array form (or a string form if it is a single default value only).
2828
default:
2929
- file one
3030
- file-two

lib/bashly/config_validator.rb

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,6 @@ def assert_arg(key, value)
110110
if value['default'].is_a? Array
111111
assert value['repeatable'], "#{key}.default array does not make sense without nub`repeatable`"
112112
end
113-
114-
if value['repeatable'] && value['default']
115-
assert value['default'].is_a?(Array), "#{key}.default must be an array when using nub`repeatable`"
116-
end
117113
end
118114

119115
def assert_flag(key, value)
@@ -163,10 +159,6 @@ def assert_flag(key, value)
163159
if value['default'].is_a? Array
164160
assert value['repeatable'], "#{key}.default array does not make sense without nub`repeatable`"
165161
end
166-
167-
if value['repeatable'] && value['default']
168-
assert value['default'].is_a?(Array), "#{key}.default must be an array when using nub`repeatable`"
169-
end
170162
end
171163

172164
def assert_env_var(key, value)

lib/bashly/script/argument.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@ def option_keys
1212
end
1313

1414
def default_string
15-
default.is_a?(Array) ? Shellwords.shelljoin(default) : default
15+
if default.is_a?(Array)
16+
Shellwords.shelljoin default
17+
elsif default.is_a?(String) && repeatable
18+
Shellwords.shellescape default
19+
else
20+
default
21+
end
1622
end
1723

1824
def usage_string

lib/bashly/script/flag.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,13 @@ def aliases
2323
end
2424

2525
def default_string
26-
default.is_a?(Array) ? Shellwords.shelljoin(default) : default
26+
if default.is_a?(Array)
27+
Shellwords.shelljoin default
28+
elsif default.is_a?(String) && repeatable
29+
Shellwords.shellescape default
30+
else
31+
default
32+
end
2733
end
2834

2935
def name

spec/approvals/validations/arg_default_string_with_repeatable

Lines changed: 0 additions & 1 deletion
This file was deleted.

spec/approvals/validations/flag_default_string_with_repeatable

Lines changed: 0 additions & 1 deletion
This file was deleted.

spec/fixtures/script/validations.yml

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,6 @@
1313
- spaced file
1414
- other-file
1515

16-
:arg_default_string_with_repeatable:
17-
name: invalid
18-
help: default cannot be a string with repeatable
19-
args:
20-
- name: path
21-
repeatable: true
22-
default: spaced file
23-
2416
:arg_nested_name:
2517
name: invalid
2618
help: last nested arg does not have a name
@@ -284,15 +276,6 @@
284276
- spaced file
285277
- other-file
286278

287-
:flag_default_string_with_repeatable:
288-
name: invalid
289-
help: default cannot be a string with repeatable
290-
flags:
291-
- long: --path
292-
arg: location
293-
repeatable: true
294-
default: spaced file
295-
296279
:flag_allowed_without_arg:
297280
name: invalid
298281
help: flag must have an arg when using allowed

0 commit comments

Comments
 (0)