blob: 2434378f6d3b6cadee82ed11aab5d5f288cdae11 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#!/bin/bash
: ${REPO_FOLDER:=.}
: ${GEN_FOLDER:=./website}
: ${GEN_TINY_FOLDER:=./website.tiny}
: ${AWK_FILE:=/tmp/syndamiadotcom-awk}
# 0. Helper functions {{{
dur=0
startTimer() {
dur="$(date +%s%N)"
}
endTimer() {
dur="$(echo "scale=4 ; ($(date +%s%N) - $dur) / 1000000000" | bc -l)"
printf "%.3fs $1\n" $dur
}
# }}}
# 1. Markdown source to HTML {{{
[ $# -eq 0 -a "$(id -u -n)" != "www-data" ] && echo "[Warning] Running in \"production\" by a user that isn't www-root!"
[ ! -d "$GEN_FOLDER" ] && mkdir "$GEN_FOLDER"
[ $# -eq 0 -a "$(stat -c %U "$GEN_FOLDER")" != "www-data" ] && echo "[Warning] Running in \"production\" while $GEN_FOLDER isn't owned by www-data!"
# Remove record of previously generated files
rm -f "$GEN_FOLDER/.files"
ssg "$REPO_FOLDER/src" "$GEN_FOLDER" "Syndamia" "https://syndamia.com" >/dev/null
# }}}
# 2. Editing HTML files with AWK {{{
createAWKscript() {
# "librarires"
find "$REPO_FOLDER/awk-edits" -type f -name "#*.awk" -exec cat {} + > "$AWK_FILE"
# Scripts
find "$REPO_FOLDER/awk-edits" -type f -name "[A-Z]*.awk" -exec cat {} + >> "$AWK_FILE"
echo '{if ($0 != 0) print}' >> "$AWK_FILE"
# Post-print part of scripts
find "$REPO_FOLDER/awk-edits" -type f -name "[a-z]*.awk" -exec cat {} + >> "$AWK_FILE"
}
# $1 - $libs, for devs
runAWKscript() {
[ -z "$1" ] && params="-f $AWK_FILE" \
|| params="$1 -f $AWK_FILE -f /tmp/awk-print $postfile"
for file in $(find "$GEN_FOLDER" -type f -name "*.html"); do
awk --posix $params "$file" > tmp && mv -f tmp "$file"
done
}
if [ $# -eq 0 ]; then # Run in "production"
createAWKscript
runAWKscript
elif [ "$1" == 'dev' ]; then
startTimer
createAWKscript
endTimer "generation of $AWK_FILE"
startTimer
runAWKscript
endTimer "$AWK_FILE"
elif [ "$1" == 'devs' ]; then
echo '{if ($0 != 0) print}' > /tmp/awk-print
libs=""
for l in $(find "$REPO_FOLDER/awk-edits" -type f -name "#*.awk"); do
libs+=" -f $l "
done
for i in $(find "$REPO_FOLDER/awk-edits" -type f -name "[A-Z]*.awk") $(find "$REPO_FOLDER/awk-edits" -type f -name "[a-z]*.awk" -not -name "post-[A-Z]*.awk"); do
AWK_FILE="$i"
postfile="$(find "$REPO_FOLDER/awk-edits" -type f -name "post-${AWK_FILE##*/}")"
if [ -n "$postfile" ]; then
i="$i + $postfile"
postfile=" -f ${postfile}"
fi
startTimer
runAWKscript "$libs"
endTimer "$i"
done
fi
# }}}
# 3. Tiny version, strip away styles and other stuff {{{
[ ! -d "$GEN_TINY_FOLDER" ] && mkdir "$GEN_TINY_FOLDER"
[ $# -eq 0 -a "$(stat -c %U "$GEN_TINY_FOLDER")" != "www-data" ] && echo "[Warning] Running in \"production\" while $GEN_TINY_FOLDER isn't owned by www-data!"
# Just take what is already made, no need to regenerate everything
cp -r "$GEN_FOLDER"/* "$GEN_TINY_FOLDER"
# Remove unnecessary files
rm -f "$GEN_TINY_FOLDER"/*.css
rm -rf "$GEN_TINY_FOLDER"/fonts/
rm -f "$GEN_TINY_FOLDER"/.files
improveForTINY() {
for file in $(find "$GEN_TINY_FOLDER" -type f -name "*.html"); do
# Remove references to stylesheets in all files
sed -i -E 's/^.*(rel="stylesheet|\<script|btn).*//g' $file
sed -i 's/<span>Content/<br><span>Content/g' $file
# Fix svg images being too big (scaling without limit)
sed -i 's/<\/head>/\t<style>img[src$="svg"] { max-height: 1em; } #index-contents-img { max-width: 7.6em; }<\/style>\n<\/head>/' $file
done
}
if [ $# -eq 0 ]; then
improveForTINY
else
startTimer
improveForTINY
endTimer "tiny website page improvements"
fi
# }}}
|