Summary Files Commits Branches @commit @diff @stats
path: root / generate.sh
diff options
context:
space:
mode:
1 files changed, 5 insertions, 104 deletions
-rwxr-xr-xgenerate.sh109
diff --git a/generate.sh b/generate.sh
index b3ef0dd..3da2c1e 100755
--- a/generate.sh
+++ b/generate.sh
@@ -3,115 +3,17 @@
: ${REPO_FOLDER:=.}
: ${GEN_FOLDER:=./website}
: ${GEN_TINY_FOLDER:=./website.tiny}
-: ${AWK_FILE:=/tmp/syndamiadotcom-awk}
+: ${AWK_FOLDER:=./awk-edits}
-# 0. Helper functions {{{
- dur=0
- startTimer() {
- dur="$(date +%s%N)"
- }
-
- endTimer() {
- dur="$(echo "scale=4 ; ($(date +%s%N) - $dur) / 1000000000 - ${2:-0}" | bc -l)"
- printf "%.3fs $1\n" $dur
- }
-# }}}
-# 0.5 Fix hardlinks {{{
- startTimer
- for folder in $(find "$REPO_FOLDER/src" -maxdepth 1 -type d); do
- if [ -f "$folder.md" ] && [ ! "$folder.md" -ef "$folder/index.md" ]; then
- rm "$folder/index.md" >/dev/null 2>&1
- ln "$folder.md" "$folder/index.md"
- fi
- done
- endTimer "[Stage 0.5] Fixed folder/index.md hardlinks"
-# }}}
# 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 -rf "$GEN_FOLDER"
- mkdir "$GEN_FOLDER"
- startTimer
- ssg "$REPO_FOLDER/src" "$GEN_FOLDER" "Syndamia" "https://syndamia.com" >/dev/null 2>&1
- endTimer "[Stage 1] Converted Markdown to HTML"
+ /usr/bin/env dash ./csg/csg "$REPO_FOLDER/src" "$GEN_FOLDER" '& \\— Syndamia' 'https://syndamia.com' "$AWK_FOLDER"
# }}}
-# 1.5 Custom logic - timestamps.txt {{{
- headc=$(git rev-parse HEAD)
- if [ ! -f 'timestamps.txt' ] || [ "$headc" != "$(head -1 timestamps.txt)" ]; then
- echo "$headc" > timestamps.txt
-
- startTimer
- for file in $(find "$REPO_FOLDER/src" -type f -regex '.*src/[^/]*/[^/]*/.*md'); do
- dates=($(git log --follow --pretty=format:%ad --date="format:%d %B %Y" -- $file))
- line="./website${file:5:-2}html\t${dates[@]: -3:3}\t${dates[@]:0:3}"
- echo -e $line >> timestamps.txt
- done
- endTimer "[Stage 1.5] Recreated timestamps.txt"
- fi
-# }}}
-# 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"
- }
- # $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
- startTimer
- runAWKscript
- endTimer "[Stage 2] Ran $AWK_FILE"
-
-
- elif [ "$1" == 'dev' ]; then
- startTimer
- createAWKscript
- endTimer "[Stage 2] Created $AWK_FILE"
- startTimer
- runAWKscript
- endTimer "[Stage 2] Ran $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
-
- # We only care about how long the script itself was executed, without the time it takes to
- # open and close every file, this way we'll subtract this delay
- AWK_FILE="$REPO_FOLDER/awk-edits/empty"
- startTimer
- runAWKscript "$libs"
- fileOpenOffset="$(endTimer "[Stage 2] Subtracted time for file open/close")"
- printf "$fileOpenOffset\n"
- fileOpenOffset="${fileOpenOffset:0:5}"
-
- for i in $(find "$REPO_FOLDER/awk-edits" -type f -name "[A-Z]*.awk"); do
- AWK_FILE="$i"
-
- startTimer
- runAWKscript "$libs"
- endTimer "[Stage 2] Ran $i" "$fileOpenOffset"
- done
- fi
-# }}}
-# 3. Tiny version, strip away styles and other stuff {{{
+# 2. 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!"
@@ -133,13 +35,12 @@
done
}
+ echo "[Stage 3] Tiny website"
if [ $# -eq 0 ]; then
improveForTINY
else
- startTimer
- improveForTINY
- endTimer "[Stage 3] Tiny website improvements"
+ improveForTINY
fi
# }}}