From 71f97adcc4773fd4f538daa2da38c7596926fa30 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 26 Mar 2024 21:22:00 +0200 Subject: Fix bugs, prepare for deployment --- Dockerfile | 17 +++++++++++++++++ feed.scm | 9 +++++++-- monitor-fswatch.sh | 13 +++++++++++++ monitor-inotifywait.sh | 13 +++++++++++++ requirements.list | 5 +++++ vendor/bin/pandoc-rss | 7 +++++-- 6 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 Dockerfile create mode 100755 monitor-fswatch.sh create mode 100755 monitor-inotifywait.sh create mode 100644 requirements.list diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0fa0d69 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM alpine:latest + +WORKDIR /app + +# Install deps +RUN apk add --no-cache chicken inotify-tools bash pandoc coreutils +COPY requirements.list ./requirements.list +RUN chicken-install -from-list requirements.list + +# Build app +COPY vendor ./vendor +COPY *.sh ./ +COPY static ./static +COPY template.html ./template.html +COPY *.scm ./ + +CMD ["/bin/bash", "monitor-inotifywait.sh"] diff --git a/feed.scm b/feed.scm index 57a0afb..1badb35 100644 --- a/feed.scm +++ b/feed.scm @@ -14,13 +14,16 @@ (define (generate-feed src-dir archive-dir out-dir) (define paths (glob (format "~A/*" archive-dir))) + (define archive-format (pipe archive-dir + (@ replace (format "^~A\\/?" src-dir) "") + (@ format "~A/%s"))) (define output-port (process "vendor/bin/pandoc-rss" (apply list "-s" "-t" "jan's garden" "-d" "RSS feed for Jan's personal digital garden" "-l" "https://jan.systems" - "-f" "%s" + "-f" archive-format "-n" "en-GB" "-c" "CC BY-SA 4.0" "-w" "https://jan.systems" @@ -71,9 +74,10 @@ (define (compare a b) (string>? (assocdr 'date (cdr a)) (assocdr 'date (cdr b)))) - (list-sort! compare index-alist) + (define index-alist (list-sort! compare index-alist)) (define (to-li pair) + (printf "[info] indexing page ~A~%" pair) (define path (car pair)) (define title (assocdr 'title (cdr pair))) (define date (assocdr 'date (cdr pair))) @@ -86,6 +90,7 @@ (define index-lis (map to-li index-alist)) (define out-md (string-append "---\n" "title: Archive\n" + "hide-body-title: defined\n" "---\n" "# Archive\n\n" (string-join index-lis "\n"))) diff --git a/monitor-fswatch.sh b/monitor-fswatch.sh new file mode 100755 index 0000000..c989d69 --- /dev/null +++ b/monitor-fswatch.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +dir="${SRC_DIR:-pages}" + +set -euxo pipefail + +csi -s main.scm + +while true; do + fswatch -r -L -1 "${dir}" + sleep 1 + csi -s main.scm +done diff --git a/monitor-inotifywait.sh b/monitor-inotifywait.sh new file mode 100755 index 0000000..03fefae --- /dev/null +++ b/monitor-inotifywait.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +dir="${SRC_DIR:-pages}" + +set -euxo pipefail + +csi -s main.scm + +while true; do + inotifywait -r -q "${dir}" + sleep 1 + csi -s main.scm +done diff --git a/requirements.list b/requirements.list new file mode 100644 index 0000000..6102a50 --- /dev/null +++ b/requirements.list @@ -0,0 +1,5 @@ +(srfi-1 "0.5.1") +(srfi-13 "0.3.4") +(srfi-18 "0.1.7") +(srfi-132 "1.0.0") +(matchable "1.1") diff --git a/vendor/bin/pandoc-rss b/vendor/bin/pandoc-rss index f1a1d7d..dad8232 100755 --- a/vendor/bin/pandoc-rss +++ b/vendor/bin/pandoc-rss @@ -100,11 +100,14 @@ get_date () shift if date=$(get_metadata_value date "$input_file") then - if [ -f /opt/homebrew/bin/gdate ]; then + if [ -f /opt/homebrew/bin/gdate ]; then date_cmd=/opt/homebrew/bin/gdate - else + elif [ -f /usr/bin/date ]; then date_cmd=/usr/bin/date + else + date_cmd=/bin/date fi + $date_cmd --utc --date "$date" +'%a, %d %b %Y %T +0000' fi } -- cgit v1.3