'use strict'; /* * pruefe-version.js – läuft vor jedem Build (prebuild) * ---------------------------------------------------- * Bricht ab, wenn die Version aus package.json schon als Release in Gitea * veröffentlicht ist. Ein neuer Build derselben Version ergäbe andere Dateien * mit neuer Signatur – die bereits veröffentlichten EXEs würden dann nicht mehr * dazu passen und kein Launcher nähme das Update an. * * Außerdem sagt es, wie das Release in Gitea heißen muss: * * fertige Version 1.2.4 Tag 1.2.4 * Vorabfassung 1.2.4-beta.1 Tag 0.0.0-1.2.4-beta.1 + Haken "Pre-Release" * * Der Vorsatz "0.0.0-" bei Vorabfassungen ist Pflicht: Launcher bis 1.2.3 kennen * das Pre-Release-Feld nicht und würden "1.2.4-beta.1" als normales Update an * ALLE Nutzer verteilen (siehe src/updater.js). * * Ausnahme (z. B. Testbuild, der nie hochgeladen wird): AEROMC_GLEICHE_VERSION=1 */ const path = require('path'); const API = 'https://git.viper.ipv64.net/api/v1/repos/M_Viper/AeroMc-Launcher/releases?limit=50'; const version = require(path.join(__dirname, '..', 'package.json')).version; const vorab = /^\d+(?:\.\d+){0,2}-/.test(version); const tag = vorab ? `0.0.0-${version}` : version; (async () => { if (process.env.AEROMC_GLEICHE_VERSION !== '1') { try { const res = await fetch(API, { headers: { 'User-Agent': 'AeroMC-Release', Accept: 'application/json' } }); if (!res.ok) throw new Error('HTTP ' + res.status); const norm = (v) => String(v || '').trim().replace(/^v/i, '').replace(/^0\.0\.0-(?=\d)/, ''); const treffer = (await res.json() || []).find((r) => !r.draft && norm(r.tag_name) === version); if (treffer) { console.error(`\n✖ Version ${version} ist bereits in Gitea veröffentlicht (Tag ${treffer.tag_name}, ${treffer.published_at}).`); console.error(' Bitte zuerst die Versionsnummer in package.json erhöhen – sonst passen die'); console.error(' veröffentlichten Dateien nicht mehr zur Signatur.'); process.exit(1); } } catch (err) { console.warn(`\n! Gitea nicht erreichbar (${err.message}) – Versionsprüfung übersprungen.`); } } console.log(`» Version ${version} ist noch nicht veröffentlicht – Build läuft.`); if (vorab) { console.log(` VORABFASSUNG – in Gitea so veröffentlichen: Tag ${tag} und Haken bei "Als Pre-Release kennzeichnen".`); console.log(' Niemals mit dem Tag der reinen Versionsnummer: Ältere Launcher würden die Beta sonst an alle verteilen.'); } else { console.log(` In Gitea veröffentlichen mit dem Tag ${tag} (ohne Pre-Release-Haken).`); } })();