#!/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();