#!/usr/bin/env bash # Jenkins Desktop 빌드 시작 전 — git 동기화·deps·source-state (1회 성공률 향상) set -euo pipefail WORK_TREE="${WORK_TREE:-/Users/aidev/apps/goldenChart}" ROOT="$WORK_TREE" export WORK_TREE export PATH="/opt/homebrew/opt/llvm/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:${PATH:-/usr/bin:/bin}" for prefix in "$HOME/homebrew" /opt/homebrew; do [[ -x "$prefix/bin/brew" ]] && eval "$("$prefix/bin/brew" shellenv)" done # shellcheck disable=SC1091 [[ -f "$HOME/.cargo/env" ]] && source "$HOME/.cargo/env" log() { echo "[prepare-desktop $(date '+%H:%M:%S')] $*"; } GIT_DIR="${GIT_DIR:-/Volumes/ADATA/git/goldenChart.git}" if [[ -d "$GIT_DIR" ]]; then log "git fetch + checkout main" if git --git-dir="$GIT_DIR" remote get-url origin >/dev/null 2>&1; then git --git-dir="$GIT_DIR" fetch origin main 2>/dev/null || true fi git --git-dir="$GIT_DIR" --work-tree="$WORK_TREE" checkout -f main 2>/dev/null || true git --git-dir="$GIT_DIR" --work-tree="$WORK_TREE" reset --hard main 2>/dev/null || true fi chmod +x "$WORK_TREE/scripts/"*.sh 2>/dev/null || true "$WORK_TREE/scripts/update-desktop-source-state.sh" if ! command -v cargo-xwin >/dev/null 2>&1 || ! command -v rustc >/dev/null 2>&1; then log "desktop build deps 설치" "$WORK_TREE/scripts/install-desktop-build-deps.sh" fi if [[ -f "$WORK_TREE/desktop/updater.pub" ]]; then "$WORK_TREE/scripts/patch-tauri-updater-pubkey.sh" fi log "clean desktop Vite dist (stale frontend 번들 방지)" rm -rf "$WORK_TREE/desktop/dist" log "npm ci (monorepo deps — git reset 후 node_modules 불일치 방지)" cd "$WORK_TREE" if [[ -f package-lock.json ]]; then npm ci --prefer-offline else npm install fi log "HEAD $(git -C "$WORK_TREE" rev-parse --short HEAD 2>/dev/null || echo n/a)" log "prepare OK"