#!/usr/bin/env bash # 빌드 직전 semver patch bump (필수) — 실패 시 exit 1 set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" WORK_TREE="${WORK_TREE:-$ROOT}" export WORK_TREE export DESKTOP_UPDATE_BASE_URL="${DESKTOP_UPDATE_BASE_URL:-https://stock.exdev.co.kr/desktop/updates}" CONF="$WORK_TREE/desktop/src-tauri/tauri.conf.json" CARGO="$WORK_TREE/desktop/src-tauri/Cargo.toml" PKG="$WORK_TREE/desktop/package.json" BEFORE="$("$ROOT/scripts/read-desktop-version.sh")" echo "[bump-before-build] current v${BEFORE}" >&2 chmod +x "$ROOT/scripts/bump-desktop-version-from-release.sh" NEW="$("$ROOT/scripts/bump-desktop-version-from-release.sh")" if [[ -z "$NEW" || "$NEW" == "$BEFORE" ]]; then echo "[bump-before-build] ERROR: bump failed — still v${BEFORE}" >&2 echo " remote latest: ${DESKTOP_UPDATE_BASE_URL}/latest.json 확인" >&2 exit 1 fi # semver strictly increased if ! node -e " const parse = v => String(v||'0').replace(/^v/i,'').split('.').map(n=>parseInt(n,10)||0); const a=parse(process.argv[1]), b=parse(process.argv[2]); for(let i=0;i<3;i++){const d=(a[i]||0)-(b[i]||0);if(d){process.exit(d>0?0:1)}} process.exit(1); " "$NEW" "$BEFORE"; then echo "[bump-before-build] ERROR: v${NEW} is not greater than v${BEFORE}" >&2 exit 1 fi # Cargo.toml (Tauri 일부 경로에서 참조) if [[ -f "$CARGO" ]]; then node -e " const fs=require('fs'); const p=process.argv[1], v=process.argv[2]; let t=fs.readFileSync(p,'utf8'); if(!/^version\\s*=\\s*\"/m.test(t)){process.exit(0)} t=t.replace(/^version\\s*=\\s*\"[^\"]+\"/m, 'version = \"'+v+'\"'); fs.writeFileSync(p,t); " "$CARGO" "$NEW" fi echo "[bump-before-build] v${BEFORE} → v${NEW}" >&2 echo "$NEW"