desktop 앱 적용

This commit is contained in:
Macbook
2026-06-14 10:15:54 +09:00
parent 7a2f65088c
commit 86b99d8c10
81 changed files with 8164 additions and 37 deletions
+83
View File
@@ -0,0 +1,83 @@
#!/usr/bin/env node
/**
* dist-desktop/updates → latest.json (Tauri updater v2)
*
* Usage:
* node scripts/generate-desktop-latest-json.mjs \
* --version 0.1.0 \
* --dir dist-desktop/updates \
* --base-url http://exdev.co.kr/desktop/updates \
* --notes "Release notes"
*/
import fs from 'node:fs';
import path from 'node:path';
function arg(name, fallback) {
const i = process.argv.indexOf(name);
return i >= 0 && process.argv[i + 1] ? process.argv[i + 1] : fallback;
}
const version = arg('--version', '0.1.0');
const dir = path.resolve(arg('--dir', 'dist-desktop/updates'));
const baseUrl = (arg('--base-url', 'http://exdev.co.kr/desktop/updates')).replace(/\/$/, '');
const notes = arg('--notes', `GoldenChart Desktop ${version}`);
if (!fs.existsSync(dir)) {
console.error('Directory not found:', dir);
process.exit(1);
}
const files = fs.readdirSync(dir);
/** @type {Record<string, { url: string; signature: string }>} */
const platforms = {};
function addPlatform(platformKey, bundleName) {
const bundlePath = path.join(dir, bundleName);
if (!fs.existsSync(bundlePath)) return;
const sigPath = `${bundlePath}.sig`;
let signature = '';
if (fs.existsSync(sigPath)) {
signature = fs.readFileSync(sigPath, 'utf8').trim();
} else {
console.warn(`[warn] missing signature: ${sigPath}`);
return;
}
platforms[platformKey] = {
url: `${baseUrl}/${encodeURIComponent(bundleName)}`,
signature,
};
}
for (const f of files) {
if (f.endsWith('.sig')) continue;
const lower = f.toLowerCase();
if (lower.includes('aarch64') && (lower.endsWith('.tar.gz') || lower.endsWith('.app.tar.gz'))) {
addPlatform('darwin-aarch64', f);
} else if ((lower.includes('x64') || lower.includes('x86_64')) && lower.endsWith('.tar.gz')) {
addPlatform('darwin-x86_64', f);
} else if (lower.includes('aarch64') && lower.endsWith('.app.tar.gz')) {
addPlatform('darwin-aarch64', f);
} else if (lower.endsWith('.nsis.zip') || (lower.includes('setup') && lower.endsWith('.zip'))) {
addPlatform('windows-x86_64', f);
} else if (lower.endsWith('.app.tar.gz')) {
// universal mac fallback
if (!platforms['darwin-aarch64']) addPlatform('darwin-aarch64', f);
}
}
const manifest = {
version,
notes,
pub_date: new Date().toISOString(),
platforms,
};
const outPath = path.join(dir, 'latest.json');
fs.writeFileSync(outPath, `${JSON.stringify(manifest, null, 2)}\n`);
console.log('Wrote', outPath);
console.log('Platforms:', Object.keys(platforms).join(', ') || '(none — sign updater bundles first)');
if (Object.keys(platforms).length === 0) {
process.exit(2);
}