From 13b4cb5d79f98d1e2e1eb75307741ad55a3dcc2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Preu=C3=9F?= <1371300+Bizarrus@users.noreply.github.com> Date: Wed, 25 Sep 2024 19:10:15 +0200 Subject: [PATCH] Adding Theme Builder --- .builder/build.js | 62 ++++++++++++++++++++++++++++++++++ .builder/package.json | 15 ++++++++ .gitignore | 3 ++ themes.packages/powerpanel.zip | 1 + 4 files changed, 81 insertions(+) create mode 100644 .builder/build.js create mode 100644 .builder/package.json create mode 100644 .gitignore create mode 100644 themes.packages/powerpanel.zip diff --git a/.builder/build.js b/.builder/build.js new file mode 100644 index 0000000..0107bf6 --- /dev/null +++ b/.builder/build.js @@ -0,0 +1,62 @@ +import Archiver from 'archiver'; +import FS from 'fs'; +import OS from 'os'; + +const exclude = [ 'themes.packages' ]; + +let themes = []; +let count = 0; + +FS.readdirSync('../').forEach(file => { + /* Ignoring hidden files */ + if(file.substr(0, 1) === '.') { + return; + } + + /* Ignoring other files */ + if(!exclude.indexOf(file)) { + return; + } + + /* Only use Directorys */ + if(FS.statSync('../' + file).isDirectory()) { + ++count; + console.log('[INFO] Found Theme:', file); + + const archive= Archiver('zip', { + zlib: { + level: 9 + }, + comment: 'Automatic packed by ThemePacker | fruithost' + }); + + const stream = FS.createWriteStream('../themes.packages/' + file + '.zip'); + + archive.directory('../' + file, true).on('finish', () => { + console.info('[INFO] Packed: ', file, '~> themes.packages/' + file + '.zip'); + themes.push(file); + }).on('error', error => { + console.error('[ERROR]', error); + }).on('warning', warning => { + console.warn('[WARNING]', warning); + }).pipe(stream); + + archive.finalize(); + } +}); + +let _watcher = setInterval(() => { + if(themes.length == count) { + clearInterval(_watcher); + console.info('[INFO] Update themes.list'); + themes.sort(); + + FS.writeFile('../themes.list', themes.join(OS.EOL), error => { + if (error) { + console.error('[ERROR]', error); + } else { + console.info('[INFO] themes.list updated with ', themes.length, ' Themes'); + } + }); + } +}); \ No newline at end of file diff --git a/.builder/package.json b/.builder/package.json new file mode 100644 index 0000000..2930be6 --- /dev/null +++ b/.builder/package.json @@ -0,0 +1,15 @@ +{ + "name": "builder", + "version": "1.0.0", + "type": "module", + "description": "Build themebased packages as installation package", + "main": "build.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Adrian Preuß", + "license": "MIT", + "dependencies": { + "archiver": "^7.0.1" + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d4aa2b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.idea/ +/.builder/node_modules +.builder/package-lock.json \ No newline at end of file diff --git a/themes.packages/powerpanel.zip b/themes.packages/powerpanel.zip new file mode 100644 index 0000000..ab0c014 --- /dev/null +++ b/themes.packages/powerpanel.zip @@ -0,0 +1 @@ +// \ No newline at end of file