9f82a541fc
Set build.publish.url to the production HTTPS feed, bump version to 1.0.16, add publish-to-updates.ps1 for VPS upload, and normalize Linux AppImage names from x86_64 to x64 after pack:linux. Co-authored-by: Cursor <cursoragent@cursor.com>
68 lines
2.1 KiB
JavaScript
68 lines
2.1 KiB
JavaScript
/**
|
|
* Build Linux release artifacts.
|
|
*
|
|
* AppImage packaging uses Linux tooling (mksquashfs). Running it from
|
|
* Windows PowerShell reaches linux-unpacked, then fails while creating
|
|
* the AppImage. Build from Linux/WSL instead.
|
|
*/
|
|
import { spawnSync } from 'node:child_process';
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import process from 'node:process';
|
|
|
|
function run(command, args) {
|
|
const result = spawnSync(command, args, {
|
|
stdio: 'inherit',
|
|
shell: process.platform === 'win32',
|
|
});
|
|
|
|
if (result.status !== 0) {
|
|
process.exit(result.status ?? 1);
|
|
}
|
|
}
|
|
|
|
/** electron-builder для AppImage x64 часто даёт `x86_64` в имени — выравниваем под feed. */
|
|
function normalizeLinuxReleaseNames() {
|
|
const releaseDir = path.resolve('release');
|
|
if (!fs.existsSync(releaseDir)) return;
|
|
|
|
for (const name of fs.readdirSync(releaseDir)) {
|
|
if (!name.includes('x86_64')) continue;
|
|
const from = path.join(releaseDir, name);
|
|
const to = path.join(releaseDir, name.replaceAll('x86_64', 'x64'));
|
|
if (from !== to && !fs.existsSync(to)) {
|
|
fs.renameSync(from, to);
|
|
console.log(`[pack:linux] renamed ${name} -> ${path.basename(to)}`);
|
|
}
|
|
}
|
|
|
|
for (const ymlName of fs.readdirSync(releaseDir)) {
|
|
if (!ymlName.startsWith('latest-linux') || !ymlName.endsWith('.yml')) continue;
|
|
const ymlPath = path.join(releaseDir, ymlName);
|
|
const text = fs.readFileSync(ymlPath, 'utf8');
|
|
const next = text.replaceAll('x86_64', 'x64');
|
|
if (next !== text) {
|
|
fs.writeFileSync(ymlPath, next);
|
|
console.log(`[pack:linux] patched ${ymlName} (x86_64 -> x64)`);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (process.platform === 'win32') {
|
|
console.error(
|
|
[
|
|
'[pack:linux] AppImage нельзя собрать напрямую из Windows PowerShell.',
|
|
'Запустите команду внутри Linux/WSL из папки проекта:',
|
|
'',
|
|
' cd /mnt/d/Work/my_projects/dnd_project/dnd_player',
|
|
' npm ci',
|
|
' npm run pack:linux',
|
|
].join('\n'),
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
run('npm', ['run', 'build']);
|
|
run('electron-builder', ['--linux']);
|
|
normalizeLinuxReleaseNames();
|