// scripts/ci/sync-version.mjs // CI_COMMIT_TAG(v0.1.0-alpha 등)에서 버전을 추출해 apps/desktop/package.json에 기록한다. // electron-builder가 package.json version으로 설치파일명/latest.yml을 만들기 때문에 // 태그와 산출물 버전이 어긋나지 않게 패키징 전에 실행한다. import { readFileSync, writeFileSync } from 'node:fs' import { fileURLToPath } from 'node:url' import { dirname, join } from 'node:path' const tag = process.env.CI_COMMIT_TAG ?? process.argv[2] if (!tag) { console.log('[sync-version] CI_COMMIT_TAG 없음 — 버전 동기화 건너뜀') process.exit(0) } const version = tag.replace(/^v/, '') if (!/^\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$/.test(version)) { console.error(`[sync-version] 유효하지 않은 semver: ${version} (tag: ${tag})`) process.exit(1) } const root = join(dirname(fileURLToPath(import.meta.url)), '..', '..') const pkgPath = join(root, 'apps', 'desktop', 'package.json') const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) if (pkg.version === version) { console.log(`[sync-version] 이미 동기화됨: ${version}`) process.exit(0) } const prev = pkg.version pkg.version = version writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n', 'utf8') console.log(`[sync-version] apps/desktop version: ${prev} → ${version}`)