#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" BUILD_DIR="$ROOT_DIR/deployment/build" ART_ROOT="$ROOT_DIR/deployment/artifact" . "$BUILD_DIR/common.sh" usage() { cat <<'EOF' Build Argus Client Offline Package Usage: build_client_package.sh [--version YYYYMMDD] [--out DIR] Produces: deployment/artifact/client//argus-metric_.tar.gz EOF } VERSION="$(today_version)" OUT_DIR="" while [[ $# -gt 0 ]]; do case "$1" in --version) VERSION="$2"; shift 2;; --out) OUT_DIR="$2"; shift 2;; -h|--help) usage; exit 0;; *) err "unknown arg: $1"; usage; exit 1;; esac done PKG_DIR="${OUT_DIR:-$ART_ROOT/client/$VERSION}" make_dir "$PKG_DIR" log "Packaging client from all-in-one-full artifact" PLUGIN_DIR="$ROOT_DIR/src/metric/client-plugins/all-in-one-full" require_cmd bash tar gzip (cd "$PLUGIN_DIR" && bash scripts/package_artifact.sh --force) # pick latest artifact dir ART_BASE="$PLUGIN_DIR/artifact" latest_dir=$(ls -1dt "$ART_BASE"/*/ 2>/dev/null | head -n1 || true) [[ -n "$latest_dir" ]] || { err "no client artifact found in $ART_BASE"; exit 1; } tmpdir=$(mktemp -d) trap 'rm -rf "$tmpdir"' EXIT rsync -a "$latest_dir" "$tmpdir/src" >/dev/null 2>&1 || cp -r "$latest_dir" "$tmpdir/src" out_name="argus-metric_$(echo "$VERSION" | sed 's/\./_/g').tar.gz" (cd "$tmpdir/src" && tar -czf "$PKG_DIR/$out_name" .) log "Client package ready: $PKG_DIR/$out_name" echo "$VERSION" > "$PKG_DIR/LATEST_VERSION" # include publish helper and setup.sh for convenience PUBLISH_TPL="$BUILD_DIR/templates/client/publish.sh" if [[ -f "$PUBLISH_TPL" ]]; then cp "$PUBLISH_TPL" "$PKG_DIR/publish.sh" && chmod +x "$PKG_DIR/publish.sh" fi # also place a copy of setup.sh alongside SETUP_SRC="$ROOT_DIR/src/metric/client-plugins/all-in-one-full/scripts/setup.sh" [[ -f "$SETUP_SRC" ]] && cp "$SETUP_SRC" "$PKG_DIR/setup.sh" || true exit 0