57 lines
1.9 KiB
Bash
Executable File
57 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# main HEAD vs 마지막 성공 PC 빌드(build-info) 비교 → source-state.json (API·UI용)
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
WORK_TREE="${WORK_TREE:-$ROOT}"
|
|
RELEASE_DIR="${GC_DESKTOP_APP_RELEASE_DIR:-$WORK_TREE/data/desktop-releases}"
|
|
BUILD_INFO="$RELEASE_DIR/build-info.json"
|
|
OUT="$RELEASE_DIR/source-state.json"
|
|
|
|
mkdir -p "$RELEASE_DIR"
|
|
|
|
HEAD_SHA="$(git -C "$WORK_TREE" rev-parse HEAD 2>/dev/null || echo '')"
|
|
HEAD_SHORT="$(git -C "$WORK_TREE" rev-parse --short HEAD 2>/dev/null || echo '')"
|
|
|
|
LAST_SHA=""
|
|
PUBLISHED_VER=""
|
|
if [[ -f "$BUILD_INFO" ]]; then
|
|
read -r LAST_SHA PUBLISHED_VER < <(node -e "
|
|
const fs=require('fs');
|
|
try {
|
|
const j=JSON.parse(fs.readFileSync(process.argv[1],'utf8'));
|
|
console.log((j.gitSha||'')+' '+(j.version||''));
|
|
} catch { console.log(' '); }
|
|
" "$BUILD_INFO")
|
|
fi
|
|
|
|
PENDING=0
|
|
AFFECTS=0
|
|
if [[ -n "$HEAD_SHA" && -n "$LAST_SHA" && "$HEAD_SHA" != "$LAST_SHA" ]]; then
|
|
PENDING="$(git -C "$WORK_TREE" rev-list --count "${LAST_SHA}..${HEAD_SHA}" 2>/dev/null || echo 0)"
|
|
# shellcheck disable=SC1091
|
|
source "$ROOT/scripts/desktop-version-scope.sh"
|
|
if desktop_version_diff_affects_app "${LAST_SHA}..${HEAD_SHA}"; then
|
|
AFFECTS=1
|
|
fi
|
|
elif [[ -n "$HEAD_SHA" && -z "$LAST_SHA" ]]; then
|
|
PENDING=1
|
|
AFFECTS=1
|
|
fi
|
|
|
|
node -e "
|
|
const fs=require('fs');
|
|
const out=process.argv[1];
|
|
const data={
|
|
headSha: process.argv[2]||'',
|
|
headShort: process.argv[3]||'',
|
|
lastBuiltSha: process.argv[4]||'',
|
|
publishedVersion: process.argv[5]||'',
|
|
pendingCommitCount: parseInt(process.argv[6],10)||0,
|
|
affectsDesktop: process.argv[7]==='1',
|
|
updatedAt: new Date().toISOString(),
|
|
};
|
|
fs.writeFileSync(out, JSON.stringify(data,null,2)+'\n');
|
|
console.log('[source-state]', data.headShort||'?','pending',data.pendingCommitCount,'affects',data.affectsDesktop);
|
|
" "$OUT" "$HEAD_SHA" "$HEAD_SHORT" "$LAST_SHA" "$PUBLISHED_VER" "$PENDING" "$AFFECTS"
|