From 78aa114d21523f53bfcffbaa14ae57c799816d1e Mon Sep 17 00:00:00 2001 From: the-djmaze <3752035+the-djmaze@users.noreply.github.com> Date: Tue, 27 Oct 2026 23:52:01 +0100 Subject: [PATCH] Add the most common compile commands javascript/css source codes --- cli/compile.php | 247 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100755 cli/compile.php diff --git a/cli/compile.php b/cli/compile.php new file mode 100755 index 000000000..936643cc3 --- /dev/null +++ b/cli/compile.php @@ -0,0 +1,247 @@ +#!/usr/bin/php +{'use strict';var aa="function"==typeof Object.defineProperties?Object.defineProperty:function(C,F,E){if(C==Array.prototype||C==Object.prototype)return C;C[F]=E.value;return C};function ba(C){C=["object"==typeof globalThis&&globalThis,C,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var F=0;FE&&(E=Math.max(E+S,0));E'); + // ECMASCRIPT_202 + $data = substr($data, 0, $p1) . substr($data, $p1 + 6, -6) . "\n"; + // ECMASCRIPT_2018 +// $data = substr($data, 0, $p1) . substr($data, $p1 + 19, -6) . "\n"; + // ECMASCRIPT6 +// $data = substr($data, 0, $p1) . substr($data, strpos($data, 'return!0}return!1}});') + 22, -6) . "\n"; + + file_put_contents($file, $data); + exit; +} + +if (isset($options['openpgp'])) { + chdir(ROOT_DIR . '/vendors/openpgp-5'); + execCmd('git pull', $return_var); + execCmd('./build.sh', $return_var); + exit; +} + +if (isset($options['squire'])) { + chdir(ROOT_DIR . '/vendors/squire2'); +// execCmd('git pull', $return_var); +// execCmd('git checkout snappymail', $return_var); + execCmd('./build.sh', $return_var); + exit; +} + +if (isset($options['source'])) { + #cd ROOT_DIR . '/vendors/openpgp-2.6.2/'; + #rollup -c + #npm cache clean --force + + if ($gulp = trim(`which gulp`)) { + execCmd($gulp, $return_var); + } else { + exit('gulp not installed, run as root: npm install --global gulp-cli'); + } + + #rollup -c + + $cmddir = escapeshellcmd(ROOT_DIR) . '/snappymail/v/0.0.0/static'; + + if ($gzip = trim(`which gzip`)) { + echo "\x1b[33;1m === Gzip *.js and *.css === \x1b[0m\n"; +// execCmd("{$gzip} -k --best {$cmddir}/js/*.js"); + execCmd("{$gzip} -k --best {$cmddir}/js/min/*.js"); + execCmd("{$gzip} -k --best {$cmddir}/css/admin*.css"); + execCmd("{$gzip} -k --best {$cmddir}/css/app*.css"); +// unlink($cmddir . '/js/boot.js.gz'); +// unlink($cmddir . '/js/min/boot.min.js.gz'); + } + + if ($brotli = trim(`which brotli`)) { + echo "\x1b[33;1m === Brotli *.js and *.css === \x1b[0m\n"; +// execCmd("{$brotli} -k --best {$cmddir}/js/*.js"); + execCmd("{$brotli} -k --best {$cmddir}/js/min/*.js"); + execCmd("{$brotli} -k --best {$cmddir}/css/admin*.css"); + execCmd("{$brotli} -k --best {$cmddir}/css/app*.css"); +// unlink($cmddir . '/js/boot.js.br'); +// unlink($cmddir . '/js/min/boot.min.js.br'); + } +} + +if (isset($options['readme'])) { + + $basedir = escapeshellcmd(ROOT_DIR) . '/snappymail/v/0.0.0'; + + $readme = file_get_contents(ROOT_DIR . '/README.md'); + + $total = filesize("{$basedir}/static/js/serviceworker.js"); + foreach (['admin','app','boot','libs','sieve'] as $name) { + $size = filesize("{$basedir}/static/js/{$name}.js"); + $total += $size; + $readme = preg_replace("/(\\|{$name}\\.js\\s+\\|[\\s0-9.]+\\|)[\\s0-9.]+\\|/Ds", + '$1' . str_pad(number_format($size, 0, '', '.'), 9, ' ', STR_PAD_LEFT) . ' |', + $readme + ); + } + $readme = preg_replace("/(\\|TOTAL\\s+\\|8[\\s0-9.]+\\|)[\\s0-9.]+\\|/Ds", + '$1' . str_pad(number_format($total, 0, '', '.'), 9, ' ', STR_PAD_LEFT) . ' |', + $readme + ); + + $total = []; + $total_br = []; + $total_gz = []; + foreach (['admin','app','boot','libs','sieve'] as $name) { + $size = filesize("{$basedir}/static/js/min/{$name}.min.js"); + $size_br = filesize("{$basedir}/static/js/min/{$name}.min.js.br"); + $size_gz = filesize("{$basedir}/static/js/min/{$name}.min.js.gz"); + $total[$name] = $size; + $total_br[$name] = $size_br; + $total_gz[$name] = $size_gz; + $readme = preg_replace( + "/(\\|{$name}\\.min\\.js\\s+\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+\\|/Ds", + '$1|' + . str_pad(number_format($size, 0, '', '.'), 9, ' ', STR_PAD_LEFT) . ' ' + . '$2|' + . str_pad(number_format($size_gz, 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '$3|' + . str_pad(number_format($size_br, 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '|' + , + $readme + ); + } + $readme = preg_replace( + "/(TOTAL user\+sieve\\s+\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+\\|/Ds", + '$1|' + . str_pad(number_format(array_sum($total) - $total['admin'], 0, '', '.'), 9, ' ', STR_PAD_LEFT) . ' ' + . '$2|' + . str_pad(number_format(array_sum($total_gz) - $total_gz['admin'], 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '$3|' + . str_pad(number_format(array_sum($total_br) - $total_br['admin'], 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '|' + , + $readme + ); + + //$smaller = 1217635 / (array_sum($total) - $total['admin']); + $smaller = 358761 / (array_sum($total_gz) - $total_gz['admin']); + //$smaller = 299485 / (array_sum($total_br) - $total_br['admin']); + $readme = preg_replace( + '/(For a user it is around) [0-9]+/', + '$1 ' . round(100 - 100 / $smaller), + $readme + ); + + unset($total['sieve']); + unset($total_br['sieve']); + unset($total_gz['sieve']); + $readme = preg_replace( + "/(TOTAL user\\s+\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+\\|/Ds", + '$1|' + . str_pad(number_format(array_sum($total) - $total['admin'], 0, '', '.'), 9, ' ', STR_PAD_LEFT) . ' ' + . '$2|' + . str_pad(number_format(array_sum($total_gz) - $total_gz['admin'], 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '$3|' + . str_pad(number_format(array_sum($total_br) - $total_br['admin'], 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '|' + , + $readme + ); + $readme = preg_replace( + "/(TOTAL admin\\s+\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+\\|/Ds", + '$1|' + . str_pad(number_format(array_sum($total) - $total['app'], 0, '', '.'), 9, ' ', STR_PAD_LEFT) . ' ' + . '$2|' + . str_pad(number_format(array_sum($total_gz) - $total_gz['app'], 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '$3|' + . str_pad(number_format(array_sum($total_br) - $total_br['app'], 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '|' + , + $readme + ); + + foreach (['admin','app'] as $name) { + $readme = preg_replace( + "/(\\|{$name}\\.css\\s+\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+\\|[\\s0-9.]+\\|/Ds", + '$1|' + . str_pad(number_format(filesize("{$basedir}/static/css/{$name}.css"), 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '$2|' + . str_pad(number_format(filesize("{$basedir}/static/css/{$name}.css.gz"), 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' |' + . str_pad(number_format(filesize("{$basedir}/static/css/{$name}.css.br"), 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '|' + , + $readme + ); + $readme = preg_replace( + "/(\\|{$name}\\.min\\.css\\s+\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+\\|[\\s0-9.]+\\|/Ds", + '$1|' + . str_pad(number_format(filesize("{$basedir}/static/css/{$name}.min.css"), 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '$2|' + . str_pad(number_format(filesize("{$basedir}/static/css/{$name}.min.css.gz"), 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' |' + . str_pad(number_format(filesize("{$basedir}/static/css/{$name}.min.css.br"), 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '|' + , + $readme + ); + } + + + $sizes = [ + filesize("{$basedir}/static/js/min/openpgp.min.js"), + filesize("{$basedir}/static/js/min/openpgp.min.js.gz"), + filesize("{$basedir}/static/js/min/openpgp.min.js.br") + ]; + //|openpgp.min.js | 330.742 | 540.542 |102.388 | 167.397 | 84.241 | 137.502 | + $readme = preg_replace( + "/(openpgp\.min\.js\\s+\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+(\\|[\\s0-9.]+)\\|[\\s0-9.]+\\|/Ds", + '$1|' + . str_pad(number_format($sizes[0], 0, '', '.'), 9, ' ', STR_PAD_LEFT) . ' ' + . '$2| ' + . str_pad(number_format($sizes[1], 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '$3| ' + . str_pad(number_format($sizes[2], 0, '', '.'), 7, ' ', STR_PAD_LEFT) . ' ' + . '|' + , + $readme + ); + + //file:// + + file_put_contents(ROOT_DIR . '/README.md', $readme); + + $data = file_put_contents( + "{$basedir}/app/templates/Views/Admin/AdminSettingsAbout.html", + preg_replace( + '/20[0-9][0-9] ©/', + date('Y').' ©', + file_get_contents("{$basedir}/app/templates/Views/Admin/AdminSettingsAbout.html") + ) + ); +}