feat: add conditional database prompts to configure_env.sh wizard

Add db_type validation case. After GITEA_DB_TYPE prompt, conditionally
show 5 database connection prompts (host, port, name, user, passwd)
when DB type is not sqlite3. Auto-suggest default port per DB type
(mysql=3306, postgres=5432, mssql=1433). Update TOTAL_PROMPTS
dynamically.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
S
2026-03-01 10:18:52 -05:00
parent b4b0d1b056
commit f098abbe55

View File

@@ -170,6 +170,10 @@ prompt_var() {
if validate_ssl_mode "$value"; then break; fi
printf '%b Invalid: must be "letsencrypt" or "existing"%b\n' "$C_RED" "$C_RESET"
;;
db_type)
if validate_db_type "$value"; then break; fi
printf '%b Invalid: must be sqlite3, mysql, postgres, or mssql%b\n' "$C_RED" "$C_RESET"
;;
nonempty|*)
if validate_nonempty "$value"; then break; fi
printf '%b Invalid: value cannot be empty%b\n' "$C_RED" "$C_RESET"
@@ -246,7 +250,28 @@ prompt_var "GITEA_ADMIN_PASSWORD" "Admin password (min 8 chars)"
prompt_var "GITEA_ADMIN_EMAIL" "Admin email" email "" "GITEA SHARED CREDENTIALS"
prompt_var "GITEA_ORG_NAME" "Organization name (e.g. mifi-llc)" nonempty "" "GITEA SHARED CREDENTIALS"
prompt_var "GITEA_INSTANCE_NAME" "Display name for Gitea (e.g. MIFI Git)" nonempty "" "GITEA SHARED CREDENTIALS"
prompt_var "GITEA_DB_TYPE" "Database type" nonempty "sqlite3" "GITEA SHARED CREDENTIALS"
prompt_var "GITEA_DB_TYPE" "Database type (sqlite3, mysql, postgres, mssql)" db_type "sqlite3" "GITEA SHARED CREDENTIALS"
# Track DB type for conditional prompts
COLLECTED_DB_TYPE=$(get_env_val "GITEA_DB_TYPE" "sqlite3")
if [[ "$COLLECTED_DB_TYPE" != "sqlite3" ]]; then
# Determine default port based on DB type
case "$COLLECTED_DB_TYPE" in
mysql) db_port_default="3306" ;;
postgres) db_port_default="5432" ;;
mssql) db_port_default="1433" ;;
*) db_port_default="" ;;
esac
prompt_var "GITEA_DB_HOST" "Database host (container IP or hostname)" nonempty "" "DATABASE"
prompt_var "GITEA_DB_PORT" "Database port" port "$db_port_default" "DATABASE"
prompt_var "GITEA_DB_NAME" "Database name" nonempty "gitea" "DATABASE"
prompt_var "GITEA_DB_USER" "Database user" nonempty "gitea" "DATABASE"
prompt_var "GITEA_DB_PASSWD" "Database password (min 8 chars)" password "" "DATABASE"
# Update total for the 5 DB prompts
TOTAL_PROMPTS=$((TOTAL_PROMPTS + 5))
fi
prompt_var "GITEA_VERSION" "Gitea Docker image tag" nonempty "1.25" "GITEA SHARED CREDENTIALS"
prompt_var "ACT_RUNNER_VERSION" "act_runner version" nonempty "0.3.0" "GITEA SHARED CREDENTIALS"