diff --git a/workflow/qhtcp-workflow b/workflow/qhtcp-workflow index 96aacce6..be6405ed 100755 --- a/workflow/qhtcp-workflow +++ b/workflow/qhtcp-workflow @@ -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