Files
AeroMc-Launcher/scripts/build-streamdeck-plugin.js
T
2026-10-30 05:54:14 +00:00

46 lines
2.0 KiB
JavaScript
Raw Permalink 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';
/*
* build-streamdeck-plugin.js – das AeroMC-Plugin als Datei zum Weitergeben packen
* -------------------------------------------------------------------------------
* Erzeugt dist/AeroMC.streamDeckPlugin. Das ist ein ZIP mit dem Plugin-Ordner; ein
* Doppelklick darauf installiert es in der Stream-Deck-Software. Die Datei ist für
* alle gedacht, die den Launcher nicht selbst aktualisieren lassen (oder die
* Stream-Deck-Software erst später installieren).
*
* Die Launcher-Installation enthält das Plugin ohnehin und kopiert es von selbst
* (src/streamdeckplugin.js) - diese Datei ist der zweite Weg dafür.
*/
const fs = require('fs');
const path = require('path');
const archiver = require('archiver');
const ROOT = path.join(__dirname, '..');
const NAME = 'com.aeromc.launcher.sdPlugin';
const QUELLE = path.join(ROOT, 'streamdeck-plugin', NAME);
const AUSGABE = path.join(ROOT, 'dist', 'AeroMC.streamDeckPlugin');
function main() {
if (!fs.existsSync(path.join(QUELLE, 'manifest.json'))) throw new Error(`${QUELLE}\\manifest.json fehlt.`);
fs.mkdirSync(path.dirname(AUSGABE), { recursive: true });
fs.rmSync(AUSGABE, { force: true });
return new Promise((resolve, reject) => {
const aus = fs.createWriteStream(AUSGABE);
const zip = archiver('zip', { zlib: { level: 9 } });
aus.on('close', () => {
const version = JSON.parse(fs.readFileSync(path.join(QUELLE, 'manifest.json'), 'utf8')).Version;
console.log(`\n» Stream-Deck-Plugin ${version}: ${AUSGABE} (${Math.round(zip.pointer() / 1024)} KB)`);
resolve();
});
zip.on('error', reject);
zip.pipe(aus);
// Der Plugin-Ordner steht als einziger Eintrag oben im ZIP; Protokolle der Stream-Deck-Software gehören nicht hinein
zip.directory(QUELLE, NAME, (eintrag) => (/^(logs[\\/]|logs$)/.test(eintrag.name.replace(NAME + '/', '')) ? false : eintrag));
zip.finalize();
});
}
main().catch((err) => { console.error('Stream-Deck-Plugin konnte nicht gepackt werden:', err.message); process.exit(1); });