summaryrefslogtreecommitdiff
path: root/build_static.php
diff options
context:
space:
mode:
authorEvgeny Zinoviev <me@ch1p.io>2022-07-11 02:59:35 +0300
committerEvgeny Zinoviev <me@ch1p.io>2022-07-11 02:59:40 +0300
commit864e73cdc75a2fb0e4fad500f649dae2343c10a8 (patch)
tree6ce6762c6be72c98592a32fe0bed4f2ce751d544 /build_static.php
parentcb13ea239b9f1ca6aea43125d5694d5a55dcd287 (diff)
rewrite css and js assets building
Diffstat (limited to 'build_static.php')
-rwxr-xr-xbuild_static.php96
1 files changed, 0 insertions, 96 deletions
diff --git a/build_static.php b/build_static.php
deleted file mode 100755
index 63c6e0e..0000000
--- a/build_static.php
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/env php8.1
-<?php
-
-function gethash(string $path): string {
- return substr(sha1(file_get_contents($path)), 0, 8);
-}
-
-function sassc(string $src_file, string $dst_file): int {
- $cmd = 'sassc -t compressed '.escapeshellarg($src_file).' '.escapeshellarg($dst_file);
- exec($cmd, $output, $code);
- return $code;
-}
-
-function clean_css(string $file) {
- $output = $file.'.out';
- if (file_exists($output))
- unlink($output);
-
- $cmd = ROOT.'/node_modules/clean-css-cli/bin/cleancss -O2 "all:on;mergeSemantically:on;restructureRules:on" '.escapeshellarg($file).' > '.escapeshellarg($output);
- system($cmd);
-
- if (file_exists($output)) {
- unlink($file);
- rename($output, $file);
- } else {
- fwrite(STDERR, "error: could not cleancss $file\n");
- }
-}
-
-function dark_diff(string $light_file, string $dark_file): void {
- $temp_output = $dark_file.'.diff';
- $cmd = ROOT.'/dark-theme-diff.js '.escapeshellarg($light_file).' '.$dark_file.' > '.$temp_output;
- exec($cmd, $output, $code);
- if ($code != 0) {
- fwrite(STDERR, "dark_diff failed with code $code\n");
- return;
- }
-
- unlink($dark_file);
- rename($temp_output, $dark_file);
-}
-
-require __DIR__.'/init.php';
-
-function build_static(): void {
- $css_dir = ROOT.'/htdocs/css';
- $hashes = [];
-
- if (!file_exists($css_dir))
- mkdir($css_dir);
-
- // 1. scss -> css
- $themes = ['light', 'dark'];
- $entries = ['common', 'admin'];
- foreach ($themes as $theme) {
- foreach ($entries as $entry) {
- $input = ROOT.'/htdocs/scss/entries/'.$entry.'/'.$theme.'.scss';
- $output = $css_dir.'/'.$entry.($theme == 'dark' ? '_dark' : '').'.css';
- if (sassc($input, $output) != 0)
- fwrite(STDERR, "error: could not compile entries/$entry/$theme.scss\n");
- }
- }
-
- // 2. generate dark theme diff
- foreach ($entries as $entry) {
- $light_file = $css_dir.'/'.$entry.'.css';
- $dark_file = str_replace('.css', '_dark.css', $light_file);
- dark_diff($light_file, $dark_file);
-
- // 2.1. apply cleancss (must be done _after_ css-patch)
- clean_css($light_file);
- clean_css($dark_file);
- }
-
- // 3. calculate hashes
- foreach (['css', 'js'] as $type) {
- $reldir = ROOT.'/htdocs/';
- $entries = glob_recursive($reldir.$type.'/*.'.$type);
- if (empty($entries)) {
- continue;
- }
- foreach ($entries as $file) {
- $name = preg_replace('/^'.preg_quote($reldir, '/').'/', '', $file);
- $hashes[$name] = gethash($file);
- }
- }
- logInfo($hashes);
-
- // 4. write config-static.php
- $scfg = "<?php\n\n";
- $scfg .= "return ".var_export($hashes, true).";\n";
-
- file_put_contents(ROOT.'/config-static.php', $scfg);
-}
-
-build_static(); \ No newline at end of file