#!/usr/bin/env bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PACKAGE_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
REPO_ROOT="$(cd "$PACKAGE_ROOT/../../.." && pwd)"
source "$SCRIPT_DIR/lib/common.sh"

ARTIFACT_ROOT=""
while [ "$#" -gt 0 ]; do
  case "$1" in
    --artifact-root) ARTIFACT_ROOT="$2"; shift 2 ;;
    *) die "unknown argument: $1" ;;
  esac
done

[ -n "$ARTIFACT_ROOT" ] || die "--artifact-root is required"
mkdir -p "$ARTIFACT_ROOT/os" "$ARTIFACT_ROOT/runtime" "$ARTIFACT_ROOT/code"

LNMP_SOURCE="$REPO_ROOT/work_binzhou_health_tech_vocational_college/deployment-packages/offline-assets/lnmp2.2-from-git-20260706.tar.gz"
LNMP_TARGET="$ARTIFACT_ROOT/runtime/lnmp2.2-from-git-20260706.tar.gz"
LNMP_SHA="9cdc130f859bfca6cbd138950128fda358b88fb1ebadad4f937ebc4560fe990b"
require_file "$LNMP_SOURCE"
verify_sha256 "$LNMP_SOURCE" "$LNMP_SHA"
if [ ! -f "$LNMP_TARGET" ]; then
  cp "$LNMP_SOURCE" "$LNMP_TARGET"
fi
verify_sha256 "$LNMP_TARGET" "$LNMP_SHA"
log "LNMP artifact ready: $LNMP_TARGET"

fetch_runtime_artifact() {
  local filename="$1"
  local url="$2"
  local expected_sha="$3"
  local target="$ARTIFACT_ROOT/runtime/$filename"
  if [ ! -f "$target" ]; then
    require_cmd curl
    curl -fL --retry 5 --connect-timeout 15 --output "$target" "$url"
  fi
  verify_sha256 "$target" "$expected_sha"
  log "runtime artifact ready: $target"
}

fetch_runtime_artifact \
  "redis-5.3.5.tgz" \
  "https://pecl.php.net/get/redis-5.3.5.tgz" \
  "d55fa5cc699198917ba2bdc827da632ad77f009ba2642d2750456a976dbe5989"
fetch_runtime_artifact \
  "Mosquitto-0.4.0.tgz" \
  "https://pecl.php.net/get/Mosquitto-0.4.0.tgz" \
  "eec599110f733afe5e0331a85d8feb354ec079b088bdca2dd81a587c5b50f8e4"
fetch_runtime_artifact \
  "supervisor-4.3.0-py2.py3-none-any.whl" \
  "https://files.pythonhosted.org/packages/0e/65/5e726c372da8a5e35022a94388b12252710aad0c2351699c3d76ae8dba78/supervisor-4.3.0-py2.py3-none-any.whl" \
  "0bcb763fddafba410f35cbde226aa7f8514b9fb82eb05a0c85f6588d1c13f8db"

log "Kylin Desktop ISO is intentionally not fetched: target OS is preinstalled and licensed media is not part of the V1.2 control package"
