7028258084
- inject-release-channel.js merges GITEA_* (or fractured-release-channel.json) into default-launcher.json before electron-builder. - CI passes existing GITEA_BASE_URL/OWNER/REPO secrets into the Windows pack job. - npm run pack:win/publish:win run the injector; workflows use npm run pack:win. Co-authored-by: Cursor <cursoragent@cursor.com>
78 lines
2.4 KiB
JavaScript
78 lines
2.4 KiB
JavaScript
#!/usr/bin/env node
|
|
'use strict';
|
|
|
|
/**
|
|
* Merge Gitea release channel (non-token) into default-launcher.json before pack.
|
|
* Precedence: env → fractured-release-channel.json → leave existing default-launcher values.
|
|
*
|
|
* Env (any of these names):
|
|
* FRACTURED_LAUNCHER_GITEA_BASE_URL | GITEA_BASE_URL
|
|
* FRACTURED_LAUNCHER_GITEA_OWNER | GITEA_OWNER
|
|
* FRACTURED_LAUNCHER_GITEA_REPO | GITEA_REPO
|
|
* FRACTURED_LAUNCHER_GITEA_RELEASE_TAG | GITEA_RELEASE_TAG
|
|
*/
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const root = path.join(__dirname, '..');
|
|
const defPath = path.join(root, 'default-launcher.json');
|
|
const channelPath = path.join(root, 'fractured-release-channel.json');
|
|
|
|
function pickEnv() {
|
|
return {
|
|
base_url: String(
|
|
process.env.FRACTURED_LAUNCHER_GITEA_BASE_URL || process.env.GITEA_BASE_URL || ''
|
|
).trim(),
|
|
owner: String(
|
|
process.env.FRACTURED_LAUNCHER_GITEA_OWNER || process.env.GITEA_OWNER || ''
|
|
).trim(),
|
|
repo: String(
|
|
process.env.FRACTURED_LAUNCHER_GITEA_REPO || process.env.GITEA_REPO || ''
|
|
).trim(),
|
|
release_tag: String(
|
|
process.env.FRACTURED_LAUNCHER_GITEA_RELEASE_TAG || process.env.GITEA_RELEASE_TAG || ''
|
|
).trim(),
|
|
};
|
|
}
|
|
|
|
function main() {
|
|
const cfg = JSON.parse(fs.readFileSync(defPath, 'utf8'));
|
|
cfg.gitea = cfg.gitea && typeof cfg.gitea === 'object' ? cfg.gitea : {};
|
|
|
|
let fileGitea = {};
|
|
try {
|
|
const raw = JSON.parse(fs.readFileSync(channelPath, 'utf8'));
|
|
if (raw && raw.gitea && typeof raw.gitea === 'object') fileGitea = raw.gitea;
|
|
} catch (e) {
|
|
if (e.code !== 'ENOENT') throw e;
|
|
}
|
|
|
|
const env = pickEnv();
|
|
const keys = ['base_url', 'owner', 'repo', 'release_tag'];
|
|
let changed = false;
|
|
|
|
for (const k of keys) {
|
|
const fromEnv = env[k];
|
|
const fromFile =
|
|
fileGitea[k] != null && String(fileGitea[k]).trim() !== '' ? String(fileGitea[k]).trim() : '';
|
|
const val = (fromEnv && String(fromEnv).trim()) || fromFile;
|
|
if (!val) continue;
|
|
if (cfg.gitea[k] !== val) {
|
|
cfg.gitea[k] = val;
|
|
changed = true;
|
|
}
|
|
}
|
|
|
|
if (!changed) {
|
|
console.log(
|
|
'inject-release-channel: no overrides (set GITEA_* env and/or fill fractured-release-channel.json)'
|
|
);
|
|
return;
|
|
}
|
|
|
|
fs.writeFileSync(defPath, `${JSON.stringify(cfg, null, 2)}\n`, 'utf8');
|
|
console.log('inject-release-channel: wrote gitea.* into default-launcher.json for this build');
|
|
}
|
|
|
|
main();
|