diff options
| Commit | bfdefbab3581739ef866b03324394fd34e9b06e3 (patch) | |
|---|---|---|
| Author | 2023-09-10 17:21:18 +0300 | |
| Committer | 2023-09-10 17:21:18 +0300 | |
| Files | 45c292ee388e720908da91f6f339fdff93d95a19 | |
| syndamia.com-bfdefbab3581739ef866b03324394fd34e9b06e3.tar syndamia.com-bfdefbab3581739ef866b03324394fd34e9b06e3.tar.gz syndamia.com-bfdefbab3581739ef866b03324394fd34e9b06e3.zip | ||
| Parent | 15c884e8dcaca3d7e95a5a8e513a682d555cf06c (diff) | |
[Pagenav] Updated logic to get timestamps from a "cache" file
Before, on every website generation, every page ran the git command to extract it's created and edited date.
This was very slow, increasing "build" times by over a second.
Now, generate.sh creates a special text file with timestamps for all pages that might want it, getting the slow git
opeations out of the way first, before any awk scripts, and then the awk script looks into that file for data.
The timestamps file is recreated only upon a new commit, so subsequence website builds are faster.
5 files changed, 30 insertions, 18 deletions
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | awk-edits/Pagenav.awk | 28 | ||||
| -rw-r--r-- | awk-edits/empty | 0 | ||||
| -rw-r--r-- | awk-edits/post-Pagenav.awk | 5 | ||||
| -rwxr-xr-x | generate.sh | 14 |
@@ -3,3 +3,4 @@ website/ tiny.website/ website.tiny/ *.swp +timestamps.txt diff --git a/awk-edits/Pagenav.awk b/awk-edits/Pagenav.awk index 2971dd7..b565de0 100644 --- a/awk-edits/Pagenav.awk +++ b/awk-edits/Pagenav.awk @@ -14,23 +14,21 @@ # Split into Pagenav.awk and post-pagenav.awk BEGIN { - fileCheck = ARGV[1] # FILENAME isn't available in BEGIN + fileCheck = ARGV[1]; # FILENAME isn't available in BEGIN - if (match(fileCheck, /(blog|tutorials|talks)\/.*\//) == 0) { - found = 1 - } - else { - found = 0 - gsub(/^.*\/(synd|tiny.synd|website|tiny.website)\//, "", fileCheck); gsub(/\.html/, ".md", fileCheck) - - system("git log --follow --pretty=format:%ad --date=\"format:%d %B %Y\" -- src/" fileCheck " > /tmp/syndamiadotcom-pagenav") - - dateCreate = "" - dateEdited = "" - while ((getline < "/tmp/syndamiadotcom-pagenav") > 0) { - if (dateEdited == "") dateEdited = $0 - dateCreate = $0 + elem = ""; + if (match(fileCheck, /(blog|tutorials|talks)\/.*\//)) { + dateCreate = ""; + dateEdited = ""; + FS = "\t" + while ((getline < "./timestamps.txt") > 0) { + if ($1 == fileCheck) { + dateCreate = $2; + dateEdited = $3; + break; + } } + FS = " " # gawk only? elem = ORS \ "<div id=\"pagenav\">" ORS \ diff --git a/awk-edits/empty b/awk-edits/empty new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/awk-edits/empty diff --git a/awk-edits/post-Pagenav.awk b/awk-edits/post-Pagenav.awk index 4587cae..1103695 100644 --- a/awk-edits/post-Pagenav.awk +++ b/awk-edits/post-Pagenav.awk @@ -1,4 +1,3 @@ -found == 0 && /<h1.*/ { - print elem - found = 1 +/<h1.*/ { + printf elem } diff --git a/generate.sh b/generate.sh index 2434378..9c1544a 100755 --- a/generate.sh +++ b/generate.sh @@ -26,6 +26,20 @@ rm -f "$GEN_FOLDER/.files" ssg "$REPO_FOLDER/src" "$GEN_FOLDER" "Syndamia" "https://syndamia.com" >/dev/null # }}} +# 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 '.*\(blog\|tutorials\|talks\)/.*md'); do + dates=($(git log --reverse --follow --pretty=format:%ad --date="format:%d %B %Y" -- $file)) + line="./website${file:5:-2}html\t${dates[@]:0:3}\t${dates[@]: -3:3}" + echo -e $line >> timestamps.txt + done + endTimer "timestamps.txt update" + fi +# }}} # 2. Editing HTML files with AWK {{{ createAWKscript() { # "librarires" |