Files
AeroMc-Launcher/scripts/pruefe-version.js
T
2026-10-11 07:05:39 +00:00

55 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'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).`);
}
})();