Skip to content

Commit 46c0f4e

Browse files
authored
Merge pull request #259 from DannyBen/update/validator-default-command
Update validator to alert when a default command has no args
2 parents d6c5a9b + cfbb038 commit 46c0f4e

File tree

3 files changed

+24
-10
lines changed

3 files changed

+24
-10
lines changed

lib/bashly/config_validator.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,10 @@ def assert_command(key, value)
142142
assert_uniq "#{key}.flags", value['flags'], 'short'
143143
assert_uniq "#{key}.args", value['args'], 'name'
144144

145+
if value['default']
146+
assert value['args'], "#{key}.default makes no sense without args"
147+
end
148+
145149
if value['catch_all'] and value['args']
146150
repeatable_arg = value['args'].select { |a| a['repeatable'] }.first&.dig 'name'
147151
refute repeatable_arg, "#{key}.catch_all makes no sense with repeatable arg (#{repeatable_arg})"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#<Bashly::ConfigurationError: root.commands[0].default makes no sense without args>

spec/fixtures/script/validations.yml

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@
88
name: invalid
99
help: last nested arg does not have a name
1010
commands:
11-
- name: level1
12-
commands:
13-
- name: level2a
14-
args:
15-
- name: ok
16-
- name: alright
17-
- name: level2b
18-
args:
19-
- name: ok
20-
- help: there is no name
11+
- name: level1
12+
commands:
13+
- name: level2a
14+
args:
15+
- name: ok
16+
- name: alright
17+
- name: level2b
18+
args:
19+
- name: ok
20+
- help: there is no name
2121

2222
:command_catch_all_type:
2323
name: invalid
@@ -102,6 +102,13 @@
102102
flags:
103103
- long: --force
104104

105+
:commands_default_without_args:
106+
name: invalid
107+
help: default command requires args
108+
commands:
109+
- name: sub
110+
default: true
111+
105112
:env_var:
106113
name: invalid
107114
help: env_var.required should be a boolean
@@ -201,6 +208,8 @@
201208
name: invalid
202209
help: root cannot have default
203210
default: true
211+
args:
212+
- name: ok
204213

205214
:root_expose:
206215
name: invalid

0 commit comments

Comments
 (0)