fix: fetch installer templates for pipe execution
This commit is contained in:
+17
-2
@@ -2,6 +2,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
CATALOG_URL=${XYMEDIA_CATALOG_URL:-https://git.keeper.work/admin/xymediavault-releases/raw/branch/main/catalog-v1.json}
|
||||
RELEASE_BASE=${XYMEDIA_RELEASE_BASE:-https://git.keeper.work/admin/xymediavault-releases/raw/branch/main}
|
||||
SCRIPT_DIR=$(cd -- "$(dirname -- "$0")" && pwd -P)
|
||||
INSTALL_DIR=/opt/xymediavault
|
||||
PG_HOST=postgres
|
||||
@@ -56,6 +57,20 @@ else
|
||||
fi
|
||||
fi
|
||||
chmod 600 "$PG_PASSWORD_FILE"
|
||||
TEMPLATE_DIR="$INSTALL_DIR/bootstrap"
|
||||
mkdir -p "$TEMPLATE_DIR"
|
||||
template_file() {
|
||||
local name=$1 local_file="$SCRIPT_DIR/$1" downloaded="$TEMPLATE_DIR/$1"
|
||||
if [[ -f $local_file ]]; then
|
||||
printf '%s\n' "$local_file"
|
||||
return 0
|
||||
fi
|
||||
curl --fail --silent --show-error --location --proto '=https' --tlsv1.2 "$RELEASE_BASE/$name" -o "$downloaded"
|
||||
printf '%s\n' "$downloaded"
|
||||
}
|
||||
CONFIG_TEMPLATE=$(template_file config.yaml)
|
||||
COMPOSE_TEMPLATE=$(template_file compose.yaml)
|
||||
DOCKERFILE_TEMPLATE=$(template_file Dockerfile.bootstrap)
|
||||
umask 077
|
||||
printf 'XYMEDIA_INSTALL_DIR=%s\nXYMEDIA_POSTGRES_HOST=%s\nXYMEDIA_POSTGRES_PORT=%s\nXYMEDIA_POSTGRES_DATABASE=%s\nXYMEDIA_POSTGRES_USER=%s\nXYMEDIA_API_PORT=%s\nXYMEDIA_WEBDAV_PORT=%s\nXYMEDIA_TVBOX_PORT=%s\n' "$INSTALL_DIR" "$PG_HOST" "$PG_PORT" "$PG_DB" "$PG_USER" "$API_PORT" "$WEBDAV_PORT" "$TVBOX_PORT" >"$INSTALL_DIR/.env"
|
||||
curl --fail --silent --show-error --location --proto '=https' --tlsv1.2 "$CATALOG_URL" -o "$INSTALL_DIR/catalog-v1.json"
|
||||
@@ -126,7 +141,7 @@ if (( ! SKIP_COMPONENTS )); then
|
||||
cp "$archive" "$INSTALL_DIR/components/$component.tar.zst"
|
||||
done
|
||||
fi
|
||||
PG_HOST="$PG_HOST" PG_PORT="$PG_PORT" PG_DB="$PG_DB" PG_USER="$PG_USER" python3 - "$SCRIPT_DIR/config.yaml" "$INSTALL_DIR/config.yaml" <<'PY'
|
||||
PG_HOST="$PG_HOST" PG_PORT="$PG_PORT" PG_DB="$PG_DB" PG_USER="$PG_USER" python3 - "$CONFIG_TEMPLATE" "$INSTALL_DIR/config.yaml" <<'PY'
|
||||
import os, pathlib, sys
|
||||
template, output = map(pathlib.Path, sys.argv[1:])
|
||||
values = {
|
||||
@@ -140,7 +155,7 @@ for placeholder, value in values.items():
|
||||
content = content.replace(placeholder, value)
|
||||
output.write_text(content)
|
||||
PY
|
||||
cp "$SCRIPT_DIR/compose.yaml" "$SCRIPT_DIR/Dockerfile.bootstrap" "$INSTALL_DIR/"
|
||||
cp "$COMPOSE_TEMPLATE" "$DOCKERFILE_TEMPLATE" "$INSTALL_DIR/"
|
||||
if [[ ! -f "$INSTALL_DIR/.bootstrap-dockerfile.sha256" || "$(sha256sum "$INSTALL_DIR/Dockerfile.bootstrap" | cut -d' ' -f1)" != "$(<"$INSTALL_DIR/.bootstrap-dockerfile.sha256")" ]]; then
|
||||
"${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" build app
|
||||
sha256sum "$INSTALL_DIR/Dockerfile.bootstrap" | cut -d' ' -f1 >"$INSTALL_DIR/.bootstrap-dockerfile.sha256"
|
||||
|
||||
Reference in New Issue
Block a user