Tidy the script startup code
This commit is contained in:
+64
-25
@@ -1096,17 +1096,25 @@ fi
|
||||
function and_all_subsequent_stages() {
|
||||
# if exactly two arguments were specified on the command line, and the first is a stage title,
|
||||
# then perform all stages subsequent to the specified stage, otherwise do nothing.
|
||||
# first_argument is already sanitized so it's safe (though incorrect) to use as a regex (for brevity)
|
||||
first_argument=${specified_arguments%% *}
|
||||
last_argument=${specified_arguments##* }
|
||||
[[ "${first_argument} ${last_argument}" = "${specified_arguments}" ]] && \
|
||||
[[ "${stages}" =~ "${first_argument}" ]] && \
|
||||
for stage in ${stages##*${first_argument}}; do ${stage}; done
|
||||
if [[ ${#specified_arguments[@]} == 2 ]]; then
|
||||
local stage
|
||||
local first_argument=${specified_arguments[0]}
|
||||
local run=n
|
||||
|
||||
for stage in "${stages[@]}"; do
|
||||
[[ $run == n ]] || "$stage"
|
||||
|
||||
if [[ $stage == "$first_argument" ]]; then
|
||||
# Run all subsequent stages.
|
||||
run=y
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
function documentation() {
|
||||
low_contrast_stages=""
|
||||
for stage in ${stages}; do
|
||||
for stage in "${stages[@]}"; do
|
||||
low_contrast_stages="${low_contrast_stages}"' '"${low_contrast_color}${stage}${default_color}"$'\n'
|
||||
done
|
||||
echo -ne "\n ${highlight_color}NAME${default_color}
|
||||
@@ -1685,7 +1693,7 @@ function prompt_delete_y_n() {
|
||||
|
||||
# command-line argument processing
|
||||
check_shell
|
||||
stages='
|
||||
stages=(
|
||||
check_gnu_coreutils_prefix
|
||||
set_variables
|
||||
welcome
|
||||
@@ -1703,27 +1711,58 @@ stages='
|
||||
create_target_virtual_disk
|
||||
populate_macos_target_disk
|
||||
prompt_delete_temporary_files
|
||||
'
|
||||
[[ -z "${1}" ]] && for stage in ${stages}; do ${stage}; done && exit
|
||||
[[ "${1}" = "documentation" ]] && documentation && exit
|
||||
valid_arguments=(${stages//$'[\r\n]'/ } check_shell troubleshoot documentation and_all_subsequent_stages)
|
||||
specified_arguments="$@" # this variable is used in the function "and_all_subsequent_stages"
|
||||
for specified_arg in "$@"; do
|
||||
there_is_a_match=""
|
||||
# doing matching the long way to prevent delimiter confusion
|
||||
for valid_arg in "${valid_arguments[@]}"; do
|
||||
[[ "${valid_arg}" = "${specified_arg}" ]] && there_is_a_match="true" && break
|
||||
)
|
||||
|
||||
if [[ $# == 0 ]]; then
|
||||
for stage in "${stages[@]}"; do
|
||||
"$stage"
|
||||
done
|
||||
if [[ -z "${there_is_a_match}" ]]; then
|
||||
echo -e "\nOne or more specified arguments is not recognized."
|
||||
echo -e "\nRecognized stages:\n${stages}"
|
||||
echo -e "Other recognized arguments:\n\n check_shell\n documentation\n troubleshoot\n and_all_subsequent_stages"
|
||||
echo -e "\nView documentation by entering the following command:"
|
||||
would_you_like_to_know_less
|
||||
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ $1 == documentation ]]; then
|
||||
documentation
|
||||
exit
|
||||
fi
|
||||
|
||||
other_commands=(
|
||||
check_shell
|
||||
troubleshoot
|
||||
documentation
|
||||
and_all_subsequent_stages
|
||||
)
|
||||
|
||||
specified_arguments=("$@") # this variable is used in the function "and_all_subsequent_stages"
|
||||
for specified_arg; do
|
||||
there_is_a_match=n
|
||||
for valid_arg in "${stages[@]}" "${other_commands[@]}"; do
|
||||
if [[ $valid_arg == "$specified_arg" ]]; then
|
||||
there_is_a_match=y
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $there_is_a_match == n ]]; then
|
||||
cat <<EOF
|
||||
|
||||
One or more specified arguments is not recognized.
|
||||
|
||||
Recognized stages:
|
||||
$(printf ' %s\n' "${stages[@]}")
|
||||
|
||||
Other recognized arguments:
|
||||
$(printf ' %s\n' "${other_commands[@]}")
|
||||
|
||||
View documentation by entering the following command:
|
||||
$(would_you_like_to_know_less)
|
||||
|
||||
EOF
|
||||
exit
|
||||
fi
|
||||
done
|
||||
|
||||
check_gnu_coreutils_prefix
|
||||
set_variables
|
||||
check_dependencies
|
||||
for argument in "$@"; do ${argument}; done
|
||||
for argument; do "${argument}"; done
|
||||
|
||||
Reference in New Issue
Block a user