refactor: extract set_db_vars and strip_template_block to lib/common.sh
Identical copies of _set_db_vars() and _strip_block() existed in phase1, phase2, and phase8. Moved to lib/common.sh as set_db_vars() and strip_template_block() (public API, no underscore prefix). Removed dead _strip_block definition from phase8 (defined but never called). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -29,50 +29,7 @@ phase_header 1 "Gitea on Unraid"
|
|||||||
# works for both Unraid (Phase 1) and Fedora (Phase 2).
|
# works for both Unraid (Phase 1) and Fedora (Phase 2).
|
||||||
DATA_PATH="$UNRAID_GITEA_DATA_PATH"
|
DATA_PATH="$UNRAID_GITEA_DATA_PATH"
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# DB helpers and strip_template_block are in lib/common.sh
|
||||||
# DB-specific variables — set based on GITEA_DB_TYPE for template rendering.
|
|
||||||
# For sqlite3, the DB service blocks are stripped entirely.
|
|
||||||
# For external DBs, these vars populate the docker-compose DB service.
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
_set_db_vars() {
|
|
||||||
case "${GITEA_DB_TYPE}" in
|
|
||||||
postgres)
|
|
||||||
DB_DOCKER_IMAGE="postgres:16-alpine"
|
|
||||||
DB_ENV_VARS=" - POSTGRES_USER=${GITEA_DB_USER}
|
|
||||||
- POSTGRES_PASSWORD=${GITEA_DB_PASSWD}
|
|
||||||
- POSTGRES_DB=${GITEA_DB_NAME}"
|
|
||||||
DB_HEALTHCHECK='["CMD-SHELL", "pg_isready -U '"${GITEA_DB_USER}"'"]'
|
|
||||||
DB_DATA_DIR="postgresql/data"
|
|
||||||
;;
|
|
||||||
mysql)
|
|
||||||
DB_DOCKER_IMAGE="mysql:8.0"
|
|
||||||
DB_ENV_VARS=" - MYSQL_ROOT_PASSWORD=${GITEA_DB_PASSWD}
|
|
||||||
- MYSQL_DATABASE=${GITEA_DB_NAME}
|
|
||||||
- MYSQL_USER=${GITEA_DB_USER}
|
|
||||||
- MYSQL_PASSWORD=${GITEA_DB_PASSWD}"
|
|
||||||
DB_HEALTHCHECK='["CMD", "mysqladmin", "ping", "-h", "localhost"]'
|
|
||||||
DB_DATA_DIR="mysql"
|
|
||||||
;;
|
|
||||||
mssql)
|
|
||||||
DB_DOCKER_IMAGE="mcr.microsoft.com/mssql/server:2022-latest"
|
|
||||||
DB_ENV_VARS=" - ACCEPT_EULA=Y
|
|
||||||
- SA_PASSWORD=${GITEA_DB_PASSWD}"
|
|
||||||
# shellcheck disable=SC2089,SC2016
|
|
||||||
DB_HEALTHCHECK='["CMD-SHELL", "/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P '"'"'${GITEA_DB_PASSWD}'"'"' -Q \"SELECT 1\" -C -N"]'
|
|
||||||
DB_DATA_DIR="mssql/data"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
# shellcheck disable=SC2090
|
|
||||||
export DB_DOCKER_IMAGE DB_ENV_VARS DB_HEALTHCHECK DB_DATA_DIR
|
|
||||||
}
|
|
||||||
|
|
||||||
# Strip conditional blocks from a rendered file.
|
|
||||||
# Usage: _strip_block <file> <start_marker> <end_marker>
|
|
||||||
_strip_block() {
|
|
||||||
local file="$1" start="$2" end="$3"
|
|
||||||
sed -i.bak "/${start}/,/${end}/d" "$file"
|
|
||||||
rm -f "${file}.bak"
|
|
||||||
}
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Step 1: Create data directories
|
# Step 1: Create data directories
|
||||||
@@ -123,11 +80,11 @@ else
|
|||||||
# No DB service needed — render template then strip DB blocks
|
# No DB service needed — render template then strip DB blocks
|
||||||
render_template "${SCRIPT_DIR}/templates/docker-compose-gitea.yml.tpl" "$TMPFILE" \
|
render_template "${SCRIPT_DIR}/templates/docker-compose-gitea.yml.tpl" "$TMPFILE" \
|
||||||
"\${GITEA_VERSION} \${DATA_PATH} \${GITEA_CONTAINER_IP}"
|
"\${GITEA_VERSION} \${DATA_PATH} \${GITEA_CONTAINER_IP}"
|
||||||
_strip_block "$TMPFILE" "DB_SERVICE_START" "DB_SERVICE_END"
|
strip_template_block "$TMPFILE" "DB_SERVICE_START" "DB_SERVICE_END"
|
||||||
_strip_block "$TMPFILE" "DB_DEPENDS_START" "DB_DEPENDS_END"
|
strip_template_block "$TMPFILE" "DB_DEPENDS_START" "DB_DEPENDS_END"
|
||||||
else
|
else
|
||||||
# External DB — set DB-specific vars then render
|
# External DB — set DB-specific vars then render
|
||||||
_set_db_vars
|
set_db_vars
|
||||||
DB_CONTAINER_IP="${UNRAID_DB_IP}"
|
DB_CONTAINER_IP="${UNRAID_DB_IP}"
|
||||||
export DB_CONTAINER_IP
|
export DB_CONTAINER_IP
|
||||||
render_template "${SCRIPT_DIR}/templates/docker-compose-gitea.yml.tpl" "$TMPFILE" \
|
render_template "${SCRIPT_DIR}/templates/docker-compose-gitea.yml.tpl" "$TMPFILE" \
|
||||||
@@ -154,11 +111,11 @@ else
|
|||||||
if [[ "$GITEA_DB_TYPE" == "sqlite3" ]]; then
|
if [[ "$GITEA_DB_TYPE" == "sqlite3" ]]; then
|
||||||
render_template "${SCRIPT_DIR}/templates/app.ini.tpl" "$TMPFILE" \
|
render_template "${SCRIPT_DIR}/templates/app.ini.tpl" "$TMPFILE" \
|
||||||
"\${GITEA_DOMAIN} \${GITEA_DB_TYPE} \${GITEA_SECRET_KEY}"
|
"\${GITEA_DOMAIN} \${GITEA_DB_TYPE} \${GITEA_SECRET_KEY}"
|
||||||
_strip_block "$TMPFILE" "EXTDB_BLOCK_START" "EXTDB_BLOCK_END"
|
strip_template_block "$TMPFILE" "EXTDB_BLOCK_START" "EXTDB_BLOCK_END"
|
||||||
else
|
else
|
||||||
render_template "${SCRIPT_DIR}/templates/app.ini.tpl" "$TMPFILE" \
|
render_template "${SCRIPT_DIR}/templates/app.ini.tpl" "$TMPFILE" \
|
||||||
"\${GITEA_DOMAIN} \${GITEA_DB_TYPE} \${GITEA_SECRET_KEY} \${GITEA_DB_HOST} \${GITEA_DB_PORT} \${GITEA_DB_NAME} \${GITEA_DB_USER} \${GITEA_DB_PASSWD}"
|
"\${GITEA_DOMAIN} \${GITEA_DB_TYPE} \${GITEA_SECRET_KEY} \${GITEA_DB_HOST} \${GITEA_DB_PORT} \${GITEA_DB_NAME} \${GITEA_DB_USER} \${GITEA_DB_PASSWD}"
|
||||||
_strip_block "$TMPFILE" "SQLITE_BLOCK_START" "SQLITE_BLOCK_END"
|
strip_template_block "$TMPFILE" "SQLITE_BLOCK_START" "SQLITE_BLOCK_END"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
scp_to UNRAID "$TMPFILE" "${DATA_PATH}/config/app.ini"
|
scp_to UNRAID "$TMPFILE" "${DATA_PATH}/config/app.ini"
|
||||||
|
|||||||
@@ -27,46 +27,7 @@ phase_header 2 "Gitea on Fedora (Backup)"
|
|||||||
# Alias for template rendering — same template as Phase 1, different values
|
# Alias for template rendering — same template as Phase 1, different values
|
||||||
DATA_PATH="$FEDORA_GITEA_DATA_PATH"
|
DATA_PATH="$FEDORA_GITEA_DATA_PATH"
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# DB helpers and strip_template_block are in lib/common.sh
|
||||||
# DB-specific variables — same as phase1 (shared helper functions)
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
_set_db_vars() {
|
|
||||||
case "${GITEA_DB_TYPE}" in
|
|
||||||
postgres)
|
|
||||||
DB_DOCKER_IMAGE="postgres:16-alpine"
|
|
||||||
DB_ENV_VARS=" - POSTGRES_USER=${GITEA_DB_USER}
|
|
||||||
- POSTGRES_PASSWORD=${GITEA_DB_PASSWD}
|
|
||||||
- POSTGRES_DB=${GITEA_DB_NAME}"
|
|
||||||
DB_HEALTHCHECK='["CMD-SHELL", "pg_isready -U '"${GITEA_DB_USER}"'"]'
|
|
||||||
DB_DATA_DIR="postgresql/data"
|
|
||||||
;;
|
|
||||||
mysql)
|
|
||||||
DB_DOCKER_IMAGE="mysql:8.0"
|
|
||||||
DB_ENV_VARS=" - MYSQL_ROOT_PASSWORD=${GITEA_DB_PASSWD}
|
|
||||||
- MYSQL_DATABASE=${GITEA_DB_NAME}
|
|
||||||
- MYSQL_USER=${GITEA_DB_USER}
|
|
||||||
- MYSQL_PASSWORD=${GITEA_DB_PASSWD}"
|
|
||||||
DB_HEALTHCHECK='["CMD", "mysqladmin", "ping", "-h", "localhost"]'
|
|
||||||
DB_DATA_DIR="mysql"
|
|
||||||
;;
|
|
||||||
mssql)
|
|
||||||
DB_DOCKER_IMAGE="mcr.microsoft.com/mssql/server:2022-latest"
|
|
||||||
DB_ENV_VARS=" - ACCEPT_EULA=Y
|
|
||||||
- SA_PASSWORD=${GITEA_DB_PASSWD}"
|
|
||||||
# shellcheck disable=SC2089,SC2016
|
|
||||||
DB_HEALTHCHECK='["CMD-SHELL", "/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P '"'"'${GITEA_DB_PASSWD}'"'"' -Q \"SELECT 1\" -C -N"]'
|
|
||||||
DB_DATA_DIR="mssql/data"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
# shellcheck disable=SC2090
|
|
||||||
export DB_DOCKER_IMAGE DB_ENV_VARS DB_HEALTHCHECK DB_DATA_DIR
|
|
||||||
}
|
|
||||||
|
|
||||||
_strip_block() {
|
|
||||||
local file="$1" start="$2" end="$3"
|
|
||||||
sed -i.bak "/${start}/,/${end}/d" "$file"
|
|
||||||
rm -f "${file}.bak"
|
|
||||||
}
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Step 1: Create data directories on Fedora
|
# Step 1: Create data directories on Fedora
|
||||||
@@ -114,10 +75,10 @@ else
|
|||||||
if [[ "$GITEA_DB_TYPE" == "sqlite3" ]]; then
|
if [[ "$GITEA_DB_TYPE" == "sqlite3" ]]; then
|
||||||
render_template "${SCRIPT_DIR}/templates/docker-compose-gitea.yml.tpl" "$TMPFILE" \
|
render_template "${SCRIPT_DIR}/templates/docker-compose-gitea.yml.tpl" "$TMPFILE" \
|
||||||
"\${GITEA_VERSION} \${DATA_PATH} \${GITEA_CONTAINER_IP}"
|
"\${GITEA_VERSION} \${DATA_PATH} \${GITEA_CONTAINER_IP}"
|
||||||
_strip_block "$TMPFILE" "DB_SERVICE_START" "DB_SERVICE_END"
|
strip_template_block "$TMPFILE" "DB_SERVICE_START" "DB_SERVICE_END"
|
||||||
_strip_block "$TMPFILE" "DB_DEPENDS_START" "DB_DEPENDS_END"
|
strip_template_block "$TMPFILE" "DB_DEPENDS_START" "DB_DEPENDS_END"
|
||||||
else
|
else
|
||||||
_set_db_vars
|
set_db_vars
|
||||||
DB_CONTAINER_IP="${FEDORA_DB_IP}"
|
DB_CONTAINER_IP="${FEDORA_DB_IP}"
|
||||||
export DB_CONTAINER_IP
|
export DB_CONTAINER_IP
|
||||||
render_template "${SCRIPT_DIR}/templates/docker-compose-gitea.yml.tpl" "$TMPFILE" \
|
render_template "${SCRIPT_DIR}/templates/docker-compose-gitea.yml.tpl" "$TMPFILE" \
|
||||||
@@ -150,11 +111,11 @@ else
|
|||||||
if [[ "$GITEA_DB_TYPE" == "sqlite3" ]]; then
|
if [[ "$GITEA_DB_TYPE" == "sqlite3" ]]; then
|
||||||
render_template "${SCRIPT_DIR}/templates/app.ini.tpl" "$TMPFILE" \
|
render_template "${SCRIPT_DIR}/templates/app.ini.tpl" "$TMPFILE" \
|
||||||
"\${GITEA_DOMAIN} \${GITEA_DB_TYPE} \${GITEA_SECRET_KEY}"
|
"\${GITEA_DOMAIN} \${GITEA_DB_TYPE} \${GITEA_SECRET_KEY}"
|
||||||
_strip_block "$TMPFILE" "EXTDB_BLOCK_START" "EXTDB_BLOCK_END"
|
strip_template_block "$TMPFILE" "EXTDB_BLOCK_START" "EXTDB_BLOCK_END"
|
||||||
else
|
else
|
||||||
render_template "${SCRIPT_DIR}/templates/app.ini.tpl" "$TMPFILE" \
|
render_template "${SCRIPT_DIR}/templates/app.ini.tpl" "$TMPFILE" \
|
||||||
"\${GITEA_DOMAIN} \${GITEA_DB_TYPE} \${GITEA_SECRET_KEY} \${GITEA_DB_HOST} \${GITEA_DB_PORT} \${GITEA_DB_NAME} \${GITEA_DB_USER} \${GITEA_DB_PASSWD}"
|
"\${GITEA_DOMAIN} \${GITEA_DB_TYPE} \${GITEA_SECRET_KEY} \${GITEA_DB_HOST} \${GITEA_DB_PORT} \${GITEA_DB_NAME} \${GITEA_DB_USER} \${GITEA_DB_PASSWD}"
|
||||||
_strip_block "$TMPFILE" "SQLITE_BLOCK_START" "SQLITE_BLOCK_END"
|
strip_template_block "$TMPFILE" "SQLITE_BLOCK_START" "SQLITE_BLOCK_END"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
scp_to FEDORA "$TMPFILE" "${DATA_PATH}/config/app.ini"
|
scp_to FEDORA "$TMPFILE" "${DATA_PATH}/config/app.ini"
|
||||||
|
|||||||
@@ -38,13 +38,6 @@ read -ra REPOS <<< "$REPO_NAMES"
|
|||||||
PHASE8_STATE_DIR="$(_project_root)/.manifests"
|
PHASE8_STATE_DIR="$(_project_root)/.manifests"
|
||||||
PHASE8_STATE_FILE="${PHASE8_STATE_DIR}/phase8_github_repo_state.json"
|
PHASE8_STATE_FILE="${PHASE8_STATE_DIR}/phase8_github_repo_state.json"
|
||||||
|
|
||||||
# Strip conditional blocks from a rendered file.
|
|
||||||
_strip_block() {
|
|
||||||
local file="$1" start="$2" end="$3"
|
|
||||||
sed -i.bak "/${start}/,/${end}/d" "$file"
|
|
||||||
rm -f "${file}.bak"
|
|
||||||
}
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Helper: persist original GitHub repo settings for teardown symmetry
|
# Helper: persist original GitHub repo settings for teardown symmetry
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user