Generator script

master
Marko Semet 2019-05-11 13:49:33 +02:00
parent adb21ffe5c
commit df8c30f5b4
2 changed files with 60 additions and 0 deletions

27
gen.sh 100755
View File

@ -0,0 +1,27 @@
#!/usr/bin/env bash
# Install updates
pip3 install --upgrade --user pip &&
pip3 install --upgrade --user pelican markdown htmlmin &&
# Clean and generate
(rm -rf output || true) &&
python3 -c "import pelican; pelican.main()" content &&
# Optimize
tools/cssfix.py output/theme/css/* &&
(
for i in `find output -wholename "*.html"`
do
htmlmin -c -s "$i" "$i" || exit 1
done
) &&
# Compress
(
for i in `find output -wholename "*.css" -or -wholename "*.js" -or -wholename "*.html"`
do
(gzip --best --keep "$i" && brotli --best --keep "$i") ||
(echo ERROR in file $i; exit 1) || exit 1
done
)

33
tools/cssfix.py 100755
View File

@ -0,0 +1,33 @@
#!/usr/bin/env python3
if __name__ == '__main__':
# Install cssutils
import subprocess
subprocess.check_call(("pip", "install", "--upgrade", "--user", "cssutils"))
# Run tool
import base64
import cssutils
import cssutils.scripts
import mimetypes
import os
import sys
for i in sys.argv[1:]:
file = cssutils.parseFile(i)
# Inline urls
def urlInlineFunction(url):
tmp = os.path.join(os.path.split(i)[0], url)
try:
urlType = mimetypes.guess_type(tmp)[0]
return (b"data:" + urlType.encode() + b";base64," + base64.encodebytes(open(tmp, "rb").read()).replace(b"\n", b"")).decode()
except Exception as e:
print("Can't use file: " + repr(url))
print(e)
return url
cssutils.replaceUrls(file, urlInlineFunction, True)
with open(i, "wb") as tmp:
tmp.write(cssutils.scripts.csscombine(path=i, cssText=file.cssText, minify=True))