#!/usr/bin/env bash # 合并 admin 包和 amzn2023 节点包 # 无需手动解压/复制/改名 set -e ROOT=$(cd "$(dirname "$0")/.." && pwd) lookup_version() { local file=$1 local re='Version[ ]+=[ ]+"([0-9.]+)"' local data=$(cat "$file") if [[ $data =~ $re ]]; then echo "${BASH_REMATCH[1]}" else echo "error: cannot extract version from $file" >&2 exit 1 fi } ADMIN_VER=$(lookup_version "$ROOT/EdgeAdmin/internal/const/const.go") NODE_VER=$(lookup_version "$ROOT/EdgeNode/internal/const/const.go") DNS_VER=$(lookup_version "$ROOT/EdgeDNS/internal/const/const.go") HTTPDNS_VER=$(lookup_version "$ROOT/EdgeHttpDNS/internal/const/const.go") ADMIN_ZIP="$ROOT/EdgeAdmin/dist/edge-admin-linux-amd64-v${ADMIN_VER}.zip" AMZN_NODE="$ROOT/EdgeNode/dist/edge-node-linux-amd64-amzn2023-v${NODE_VER}.zip" AMZN_DNS="$ROOT/EdgeDNS/dist/edge-dns-linux-amd64-amzn2023-v${DNS_VER}.zip" AMZN_HTTPDNS="$ROOT/EdgeHttpDNS/dist/edge-httpdns-linux-amd64-amzn2023-v${HTTPDNS_VER}.zip" echo "Checking required files ..." MISSING=0 for f in "$ADMIN_ZIP" "$AMZN_NODE" "$AMZN_DNS" "$AMZN_HTTPDNS"; do if [ ! -f "$f" ]; then echo " [MISSING] $f" MISSING=1 else echo " [OK] $(basename "$f")" fi done if [ "$MISSING" -ne 0 ]; then echo "" echo "ERROR: Missing files. Build both Ubuntu and amzn2023 packages first." exit 1 fi WORK_DIR="$ROOT/EdgeAdmin/dist" cd "$WORK_DIR" echo "" echo "Extracting admin package ..." rm -rf edge-admin unzip -q "$(basename "$ADMIN_ZIP")" DEPLOY_DIR="edge-admin/edge-api/deploy" echo "Injecting amzn2023 packages ..." cp "$AMZN_NODE" "$DEPLOY_DIR/edge-node-linux-amd64-amzn2023-v${NODE_VER}.zip" cp "$AMZN_DNS" "$DEPLOY_DIR/edge-dns-linux-amd64-amzn2023-v${DNS_VER}.zip" cp "$AMZN_HTTPDNS" "$DEPLOY_DIR/edge-httpdns-linux-amd64-amzn2023-v${HTTPDNS_VER}.zip" echo "Re-packaging ..." FINAL_ZIP="edge-admin-linux-amd64-v${ADMIN_VER}.zip" rm -f "$FINAL_ZIP" zip -r -X -q "$FINAL_ZIP" edge-admin/ rm -rf edge-admin SIZE=$(du -h "$FINAL_ZIP" | cut -f1) echo "" echo "===============================" echo " Done! → $WORK_DIR/$FINAL_ZIP ($SIZE)" echo "==============================="