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