File tree Expand file tree Collapse file tree 10 files changed +99
-12
lines changed
repeatable-arg-validations
repeatable-flag-validations Expand file tree Collapse file tree 10 files changed +99
-12
lines changed Original file line number Diff line number Diff line change 11if validate
2-
32 = view_marker
43
54 if repeatable
@@ -17,7 +16,7 @@ if validate
1716 > printf "{{ strings[:validation_error] }}\n" "{{ name.upcase }}" "$(validate_{{ validate }} "${args['{{ name }}']:-}")" >&2
1817 > exit 1
1918 > fi
20- >
19+ >
2120 end
2221
2322end
Original file line number Diff line number Diff line change 11if validate
2-
32 = view_marker
43
5- > if [[ -v args['{{ long }}'] && -n $(validate_{{ validate }} "${args['{{ long }}']:-}") ]]; then
6- > printf "{{ strings[:validation_error] }}\n" "{{ usage_string }}" "$(validate_{{ validate }} "${args['{{ long }}']:-}")" >&2
7- > exit 1
8- > fi
9- >
4+ if repeatable
5+ > if [[ -v args['{{ long }}'] ]]; then
6+ > eval "values=(${args['{{ long }}']})"
7+ > for value in "${values[@]}"; do
8+ > if [[ -n $(validate_{{ validate }} "$value") ]]; then
9+ > printf "{{ strings[:validation_error] }}\n" "{{ usage_string }}" "$(validate_{{ validate }} "$value")" >&2
10+ > exit 1
11+ > fi
12+ > done
13+ > fi
14+ else
15+ > if [[ -v args['{{ long }}'] && -n $(validate_{{ validate }} "${args['{{ long }}']:-}") ]]; then
16+ > printf "{{ strings[:validation_error] }}\n" "{{ usage_string }}" "$(validate_{{ validate }} "${args['{{ long }}']:-}")" >&2
17+ > exit 1
18+ > fi
19+ >
20+ end
1021
1122end
Original file line number Diff line number Diff line change @@ -12,17 +12,23 @@ args: none
1212# you can edit it freely and regenerate (it will not be overwritten)
1313args:
1414- ${args[number]} = "1"
15+ + ./cli 1.1
16+ validation error in NUMBER:
17+ must be an integer
18+ + ./cli a
19+ validation error in NUMBER:
20+ must be an integer
1521+ ./cli 1 2
1622# this file is located in 'src/root_command.sh'
1723# you can edit it freely and regenerate (it will not be overwritten)
1824args:
1925- ${args[number]} = "1" "2"
20- + ./cli 1.1
21- validation error in NUMBER:
22- must be an integer
2326+ ./cli 1.1 2
2427validation error in NUMBER:
2528must be an integer
2629+ ./cli 1 2.2
2730validation error in NUMBER:
2831must be an integer
32+ + ./cli 1 a
33+ validation error in NUMBER:
34+ must be an integer
Original file line number Diff line number Diff line change 1+ + bundle exec bashly generate
2+ creating user files in src
3+ created src/root_command.sh
4+ created ./cli
5+ run ./cli --help to test your bash script
6+ + ./cli
7+ # this file is located in 'src/root_command.sh'
8+ # you can edit it freely and regenerate (it will not be overwritten)
9+ args: none
10+ + ./cli --number 1
11+ # this file is located in 'src/root_command.sh'
12+ # you can edit it freely and regenerate (it will not be overwritten)
13+ args:
14+ - ${args[--number]} = "1"
15+ + ./cli --number 1.1
16+ validation error in --number, -n NUMBER:
17+ must be an integer
18+ + ./cli --number a
19+ validation error in --number, -n NUMBER:
20+ must be an integer
21+ + ./cli --number 1 --number 2
22+ # this file is located in 'src/root_command.sh'
23+ # you can edit it freely and regenerate (it will not be overwritten)
24+ args:
25+ - ${args[--number]} = "1" "2"
26+ + ./cli --number 1.1 --number 2
27+ validation error in --number, -n NUMBER:
28+ must be an integer
29+ + ./cli --number 1 --number 2.2
30+ validation error in --number, -n NUMBER:
31+ must be an integer
32+ + ./cli --number 1 --number a
33+ validation error in --number, -n NUMBER:
34+ must be an integer
Original file line number Diff line number Diff line change @@ -10,7 +10,9 @@ bundle exec bashly generate
1010
1111./cli
1212./cli 1
13- ./cli 1 2
1413./cli 1.1
14+ ./cli a
15+ ./cli 1 2
1516./cli 1.1 2
1617./cli 1 2.2
18+ ./cli 1 a
Original file line number Diff line number Diff line change 1+ cli
2+ src /* .sh
Original file line number Diff line number Diff line change 1+ This fixture tests that validations on repeatable args validate all arguments
2+ ** regardless of order** .
3+ Reference issue: https://github.com/DannyBen/bashly/issues/311
Original file line number Diff line number Diff line change 1+ name : cli
2+ help : all arguments must be integers
3+
4+ flags :
5+ - long : --number
6+ short : -n
7+ arg : NUMBER
8+ repeatable : true
9+ validate : integer
Original file line number Diff line number Diff line change 1+ validate_integer () {
2+ [[ " $1 " =~ ^[0-9]+$ ]] || echo " must be an integer"
3+ }
Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+
3+ rm -f ./cli
4+ rm -f ./src/initialize.sh
5+ rm -f ./src/root_command.sh
6+
7+ set -x
8+
9+ bundle exec bashly generate
10+
11+ ./cli
12+ ./cli --number 1
13+ ./cli --number 1.1
14+ ./cli --number a
15+ ./cli --number 1 --number 2
16+ ./cli --number 1.1 --number 2
17+ ./cli --number 1 --number 2.2
18+ ./cli --number 1 --number a
You can’t perform that action at this time.
0 commit comments