fix: fetch installer templates for pipe execution
This commit is contained in:
+17
-2
@@ -2,6 +2,7 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
CATALOG_URL=${XYMEDIA_CATALOG_URL:-https://git.keeper.work/admin/xymediavault-releases/raw/branch/main/catalog-v1.json}
|
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)
|
SCRIPT_DIR=$(cd -- "$(dirname -- "$0")" && pwd -P)
|
||||||
INSTALL_DIR=/opt/xymediavault
|
INSTALL_DIR=/opt/xymediavault
|
||||||
PG_HOST=postgres
|
PG_HOST=postgres
|
||||||
@@ -56,6 +57,20 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
chmod 600 "$PG_PASSWORD_FILE"
|
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
|
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"
|
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"
|
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"
|
cp "$archive" "$INSTALL_DIR/components/$component.tar.zst"
|
||||||
done
|
done
|
||||||
fi
|
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
|
import os, pathlib, sys
|
||||||
template, output = map(pathlib.Path, sys.argv[1:])
|
template, output = map(pathlib.Path, sys.argv[1:])
|
||||||
values = {
|
values = {
|
||||||
@@ -140,7 +155,7 @@ for placeholder, value in values.items():
|
|||||||
content = content.replace(placeholder, value)
|
content = content.replace(placeholder, value)
|
||||||
output.write_text(content)
|
output.write_text(content)
|
||||||
PY
|
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
|
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
|
"${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"
|
sha256sum "$INSTALL_DIR/Dockerfile.bootstrap" | cut -d' ' -f1 >"$INSTALL_DIR/.bootstrap-dockerfile.sha256"
|
||||||
|
|||||||
Reference in New Issue
Block a user