fix: Desktop CI 버전 bump — 설치 파일·latest.json 최대값 기준
latest.json만 보면 이미 0.1.6인 클라이언트에 업데이트가 안 보이던 문제를 수정한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,29 +1,63 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# published latest.json 기준 patch 버전 bump → tauri.conf.json (CI 자동 업데이트용)
|
# published latest.json·설치 파일·tauri.conf 중 최대 버전 +1 patch → tauri.conf.json
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||||
WORK_TREE="${WORK_TREE:-$ROOT}"
|
WORK_TREE="${WORK_TREE:-$ROOT}"
|
||||||
CONF="${WORK_TREE}/desktop/src-tauri/tauri.conf.json"
|
CONF="${WORK_TREE}/desktop/src-tauri/tauri.conf.json"
|
||||||
LATEST="${WORK_TREE}/frontend/public/desktop/updates/latest.json"
|
LATEST="${WORK_TREE}/frontend/public/desktop/updates/latest.json"
|
||||||
|
UPDATES_DIR="${WORK_TREE}/frontend/public/desktop/updates"
|
||||||
|
BUILD_INFO="${WORK_TREE}/dist-desktop/build-info.json"
|
||||||
|
|
||||||
node -e "
|
node -e "
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
const confPath = process.argv[1];
|
const confPath = process.argv[1];
|
||||||
const latestPath = process.argv[2];
|
const latestPath = process.argv[2];
|
||||||
|
const updatesDir = process.argv[3];
|
||||||
|
const buildInfoPath = process.argv[4];
|
||||||
|
|
||||||
|
const parse = v => String(v || '0.0.0').trim().replace(/^v/i, '').split('.').map(n => parseInt(n, 10) || 0);
|
||||||
|
const cmp = (a, b) => {
|
||||||
|
const pa = parse(a), pb = parse(b);
|
||||||
|
const len = Math.max(pa.length, pb.length, 3);
|
||||||
|
for (let i = 0; i < len; i++) {
|
||||||
|
const d = (pa[i] || 0) - (pb[i] || 0);
|
||||||
|
if (d) return d;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
const maxVer = (cur, next) => (cmp(next, cur) > 0 ? next : cur);
|
||||||
|
|
||||||
const conf = JSON.parse(fs.readFileSync(confPath, 'utf8'));
|
const conf = JSON.parse(fs.readFileSync(confPath, 'utf8'));
|
||||||
let base = conf.version || '0.1.0';
|
let base = conf.version || '0.1.0';
|
||||||
|
|
||||||
if (fs.existsSync(latestPath)) {
|
if (fs.existsSync(latestPath)) {
|
||||||
try {
|
try {
|
||||||
const pub = JSON.parse(fs.readFileSync(latestPath, 'utf8'));
|
const pub = JSON.parse(fs.readFileSync(latestPath, 'utf8'));
|
||||||
if (pub.version) base = pub.version;
|
if (pub.version) base = maxVer(base, pub.version);
|
||||||
} catch { /* ignore */ }
|
} catch { /* ignore */ }
|
||||||
}
|
}
|
||||||
const parts = base.split('.').map(n => parseInt(n, 10) || 0);
|
if (fs.existsSync(buildInfoPath)) {
|
||||||
|
try {
|
||||||
|
const bi = JSON.parse(fs.readFileSync(buildInfoPath, 'utf8'));
|
||||||
|
if (bi.version) base = maxVer(base, bi.version);
|
||||||
|
} catch { /* ignore */ }
|
||||||
|
}
|
||||||
|
if (fs.existsSync(updatesDir)) {
|
||||||
|
for (const name of fs.readdirSync(updatesDir)) {
|
||||||
|
const m = name.match(/[_-](\\d+\\.\\d+\\.\\d+)[_-]/);
|
||||||
|
if (m) base = maxVer(base, m[1]);
|
||||||
|
const m2 = name.match(/GoldenChart_(\\d+\\.\\d+\\.\\d+)/);
|
||||||
|
if (m2) base = maxVer(base, m2[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const parts = parse(base);
|
||||||
while (parts.length < 3) parts.push(0);
|
while (parts.length < 3) parts.push(0);
|
||||||
parts[2] += 1;
|
parts[2] += 1;
|
||||||
const nv = parts.join('.');
|
const nv = parts.join('.');
|
||||||
conf.version = nv;
|
conf.version = nv;
|
||||||
fs.writeFileSync(confPath, JSON.stringify(conf, null, 2) + '\n');
|
fs.writeFileSync(confPath, JSON.stringify(conf, null, 2) + '\n');
|
||||||
console.log(nv);
|
console.log(nv);
|
||||||
" "$CONF" "$LATEST"
|
" "$CONF" "$LATEST" "$UPDATES_DIR" "$BUILD_INFO"
|
||||||
|
|||||||
Reference in New Issue
Block a user