Skip to content

Commit 6f9be50

Browse files
authored
Merge pull request #237 from tegonal/improve/ask-to-print-help-if-value-is-missing
don't print the help if one misses the argument, ask instead
2 parents 19b39fa + 4101238 commit 6f9be50

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

src/utility/parse-args.sh

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,21 @@ function parseArgumentsInternal {
143143

144144
local -ri parseArguments_arrLength="${#parseArguments_paramArr[@]}"
145145

146+
function parseArgumentsInternal_ask_printHelp() {
147+
if askYesOrNo "Shall I print the help for you?"; then
148+
parseArgumentsInternal_printHelp
149+
fi
150+
}
151+
152+
function parseArgumentsInternal_printHelp() {
153+
parse_args_printHelp parseArguments_paramArr "$parseArguments_examples" "$parseArguments_version" 4
154+
}
155+
146156
local -i parseArguments_numOfArgumentsParsed=0
147157
while (($# > 0)); do
148158
parseArguments_argName="$1"
149159
if [[ $parseArguments_argName == --help ]]; then
150-
parse_args_printHelp parseArguments_paramArr "$parseArguments_examples" "$parseArguments_version" 4
160+
parseArgumentsInternal_printHelp
151161
if ! ((parseArguments_numOfArgumentsParsed == 0)); then
152162
logWarning "there were arguments defined prior to --help, they were all ignored and instead the help is shown"
153163
elif (($# > 1)); then
@@ -172,10 +182,8 @@ function parseArgumentsInternal {
172182
if [[ $parseArguments_argName =~ $parseArguments_regex ]]; then
173183
if (($# < 2)); then
174184
logError "no value defined for parameter \033[1;36m%s\033[0m (pattern %s) in %s" "$parseArguments_paramName" "$parseArguments_pattern" "${BASH_SOURCE[2]}"
175-
echo >&2 "following the help documentation:"
176-
echo >&2 ""
177-
parse_args_printHelp >&2 parseArguments_paramArr "$parseArguments_examples" "$parseArguments_version" 4
178185
printStackTrace
186+
parseArgumentsInternal_ask_printHelp
179187
exit 9
180188
fi
181189
# that's where the black magic happens, we are assigning to global (not local to this function) variables here
@@ -192,9 +200,7 @@ function parseArgumentsInternal {
192200
else
193201
logError "unknown argument \033[1;36m%s\033[0m" "$parseArguments_argName"
194202
fi
195-
if askYesOrNo "Shall I print the help for you?"; then
196-
parse_args_printHelp >&2 parseArguments_paramArr "$parseArguments_examples" "$parseArguments_version" 4
197-
fi
203+
parseArgumentsInternal_ask_printHelp
198204
exit 9
199205
fi
200206
shift 1 || traceAndDie "could not shift by 1"

0 commit comments

Comments
 (0)