diff options
1 files changed, 5 insertions, 104 deletions
| -rwxr-xr-x | generate.sh | 109 |
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 # }}} |