XuqmGroup-PrivateDeploy/scripts/enable-service.sh

55 行
2.0 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
. "$ROOT_DIR/scripts/lib.sh"
SERVICE="${1:-}"
[ -n "$SERVICE" ] || fail_json "XUQM_PRIVATE_1002" "service name is required (im|push|update|license)" "enable-service"
if [ ! -f "$ROOT_DIR/.env" ]; then
cp "$ROOT_DIR/.env.example" "$ROOT_DIR/.env"
fi
load_env
audit "enable-service" "STARTED" "$SERVICE"
progress "enable-service" "STARTED" "$SERVICE"
case "$SERVICE" in
im)
set_env_value "$ROOT_DIR/.env" "ENABLE_IM" "true"
[ -n "${IM_DOMAIN:-}" ] || fail_json "XUQM_PRIVATE_1003" "IM_DOMAIN must be set before enabling im" "enable-service"
;;
push)
set_env_value "$ROOT_DIR/.env" "ENABLE_PUSH" "true"
[ -n "${PUSH_DOMAIN:-}" ] || fail_json "XUQM_PRIVATE_1003" "PUSH_DOMAIN must be set before enabling push" "enable-service"
;;
update)
set_env_value "$ROOT_DIR/.env" "ENABLE_UPDATE" "true"
[ -n "${UPDATE_DOMAIN:-}" ] || fail_json "XUQM_PRIVATE_1003" "UPDATE_DOMAIN must be set before enabling update" "enable-service"
;;
license)
set_env_value "$ROOT_DIR/.env" "ENABLE_LICENSE" "true"
[ -n "${LICENSE_DOMAIN:-}" ] || fail_json "XUQM_PRIVATE_1003" "LICENSE_DOMAIN must be set before enabling license" "enable-service"
;;
*)
fail_json "XUQM_PRIVATE_1002" "unknown service: $SERVICE (valid: im push update license)" "enable-service"
;;
esac
NEW_PROFILES="$(add_profile "${COMPOSE_PROFILES:-base}" "$SERVICE")"
set_env_value "$ROOT_DIR/.env" "COMPOSE_PROFILES" "$NEW_PROFILES"
load_env
"$ROOT_DIR/scripts/render-config.sh"
# Pull and start the new service
COMPOSE_PROFILES="$NEW_PROFILES" compose pull "$SERVICE-service" 2>/dev/null || true
COMPOSE_PROFILES="$NEW_PROFILES" compose up -d "$SERVICE-service"
"$ROOT_DIR/scripts/healthcheck.sh"
audit "enable-service" "DONE" "$SERVICE profiles=$NEW_PROFILES"
progress "enable-service" "DONE" "$SERVICE"
printf 'Service enabled: %s\nActive profiles: %s\n' "$SERVICE" "$NEW_PROFILES"