Allow ask_pn to create projects array and add to header

This commit is contained in:
2024-08-01 22:17:55 -04:00
parent 06dac7d83c
commit ed304809ee

View File

@@ -220,7 +220,7 @@ ask() {
err() { echo "Error: $*" >&2; } err() { echo "Error: $*" >&2; }
ask_pn() { ask_pn() {
unset PROJECT unset PROJECT
declare -g PROJECT declare -ag ADD_PROJECTS
example_pn="${PROJECT_PREFIX}_$(random_words 3)" example_pn="${PROJECT_PREFIX}_$(random_words 3)"
cat <<-EOF cat <<-EOF
Enter a new or existing project name Enter a new or existing project name
@@ -231,17 +231,22 @@ ask_pn() {
EOF EOF
trys=3 # give the user up to 3 tries to enter a valid project name trys=3 # give the user up to 3 tries to enter a valid project name
for ((i=1; i<=trys; i++)); do for ((i=1; i<=trys; i++)); do
read -r -p "Enter a new or existing project name or enter for default ($example_pn): " PROJECT read -r -p "Enter a new or existing project name or enter for default ($example_pn): " response
if [[ -z $PROJECT ]]; then if [[ -z $response ]]; then
PROJECT="$example_pn" && break ADD_PROJECTS+=("$example_pn")
break
else else
sanitize_pn "$PROJECT" && break if sanitize_pn "$response"; then
err "Invalid project name: $PROJECT" ADD_PROJECTS+=("$response")
echo "$response successfully added as a project"
i=1 # resetting trys counter in case user wants to add more than 3 projects
else
err "Invalid project name: $response"
echo "Retrying ($i of $trys)" echo "Retrying ($i of $trys)"
fi fi
fi
done done
[[ -z $PROJECT ]] && exit 1 # TODO eventually switch to return, but treat as fatal for now [[ -z ${ADD_PROJECTS[*]} ]]
echo "Using project name: $PROJECT"
} }
debug() { (( DEBUG )) && echo "Debug: $*"; } debug() { (( DEBUG )) && echo "Debug: $*"; }
# Not super portable but nice to have # Not super portable but nice to have
@@ -329,6 +334,8 @@ print_header() {
if [[ -z ${PROJECTS[*]} ]]; then if [[ -z ${PROJECTS[*]} ]]; then
num=$((${#projects[@]})) num=$((${#projects[@]}))
echo "Enter project #'s to run (comma delimited)" echo "Enter project #'s to run (comma delimited)"
read -r -p "Or hit enter to add a new project" response
[[ -z $response ]] && ask_pn && PROJECTS+=("${ADD_PROJECTS[@]}")
((YES)) || read -r -p "Hit enter for default ($num): " response ((YES)) || read -r -p "Hit enter for default ($num): " response
[[ -z $response ]] && response=$num [[ -z $response ]] && response=$num
IFS=',' read -ra arr <<< "$response" IFS=',' read -ra arr <<< "$response"
@@ -338,7 +345,6 @@ print_header() {
unset response arr i unset response arr i
fi fi
if [[ -z ${MODULES[*]} && -z ${INCLUDE_MODULES[*]} && -z ${EXCLUDE_MODULES[*]} ]]; then if [[ -z ${MODULES[*]} && -z ${INCLUDE_MODULES[*]} && -z ${EXCLUDE_MODULES[*]} ]]; then
echo "Enter module #'s to run (by #, comma delimited)" echo "Enter module #'s to run (by #, comma delimited)"
((YES)) || read -r -p "Hit enter for default (ALL): " response ((YES)) || read -r -p "Hit enter for default (ALL): " response
@@ -1651,16 +1657,16 @@ main() {
print_header "$@" print_header "$@"
# Prompt user for the PROJECT if we still don't have one # # Prompt user for the PROJECT if we still don't have one
if [[ ${#PROJECTS[@]} -eq 0 ]]; then # if [[ ${#PROJECTS[@]} -eq 0 ]]; then
ask_pn && PROJECTS+=("$PROJECT") # ask_pn && PROJECTS+=("${ADD_PROJECTS[@]}")
fi # fi
for i in "${!PROJECTS[@]}"; do for i in "${!PROJECTS[@]}"; do
if ! sanitize_pn "${PROJECTS[i]}"; then if ! sanitize_pn "${PROJECTS[i]}"; then
echo "Project name ${PROJECTS[i]} is invalid" echo "Project name ${PROJECTS[i]} is invalid"
echo "Enter a replacement" echo "Enter a replacement"
ask_pn && PROJECTS[i]="$PROJECT" ask_pn && unset "PROJECTS[i]" && PROJECTS+=("${ADD_PROJECTS[@]}")
fi fi
done done