Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commitbfdefbab3581739ef866b03324394fd34e9b06e3 (patch)
Author
 Syndamia <kamen@syndamia.com>
2023-09-10 17:21:18 +0300
Committer
 Syndamia <kamen@syndamia.com>
2023-09-10 17:21:18 +0300
Files45c292ee388e720908da91f6f339fdff93d95a19
syndamia.com-bfdefbab3581739ef866b03324394fd34e9b06e3.tar
syndamia.com-bfdefbab3581739ef866b03324394fd34e9b06e3.tar.gz
syndamia.com-bfdefbab3581739ef866b03324394fd34e9b06e3.zip
Parent15c884e8dcaca3d7e95a5a8e513a682d555cf06c (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--.gitignore1
-rw-r--r--awk-edits/Pagenav.awk28
-rw-r--r--awk-edits/empty0
-rw-r--r--awk-edits/post-Pagenav.awk5
-rwxr-xr-xgenerate.sh14
diff --git a/.gitignore b/.gitignore
index a328512..cf60546 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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"