refactor(launcher): hardcode Gitea channel in lib/baked-gitea-channel.js

- Merge baked base_url/owner/repo/release_tag at load time (no inject script,
  no fractured-release-channel.json, no CI env for pack).
- Fix mergeConfig deep-merge for gitea, patch_manifest, launcher_updates_from_github.
- Remove inject-release-channel.js and fractured-release-channel.json.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Docker Build
2026-05-10 20:15:38 -05:00
parent 15c476c12d
commit 48826e21d6
8 changed files with 48 additions and 108 deletions
@@ -1,77 +0,0 @@
#!/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();