summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-11-17 18:38:09 -0300
committerEuAndreh <eu@euandre.org>2024-11-17 18:38:09 -0300
commit9cd0311135e6f17fdc23d4cd521fc3eebf4c553e (patch)
tree77bdb723f53f5374dea2cfc0006efd2ccf707827
parentsrc/html: Support emitting only header or footer (diff)
downloadmkwb-9cd0311135e6f17fdc23d4cd521fc3eebf4c553e.tar.gz
mkwb-9cd0311135e6f17fdc23d4cd521fc3eebf4c553e.tar.xz
Improve support for multiple collections
-rwxr-xr-xsrc/conf43
-rwxr-xr-xsrc/feed14
-rwxr-xr-xsrc/indexbody6
-rwxr-xr-xsrc/sortdata3
4 files changed, 41 insertions, 25 deletions
diff --git a/src/conf b/src/conf
index d132a34..a5804b0 100755
--- a/src/conf
+++ b/src/conf
@@ -3,10 +3,29 @@ set -euo pipefail
usage() {
- echo 'Usage: conf BASECONF [GLOBALCONF FILENAME.adoc]'
+ echo <<-'EOF'
+ Usage:
+ conf GLOBALCONF FILENAME.adoc
+ conf -G BASECONF > GLOBALCONF
+ EOF
}
+GENERATE=false
+while getopts 'G' flag; do
+ case "$flag" in
+ (G)
+ GENERATE=true
+ ;;
+ (*)
+ usage >&2
+ exit 2
+ ;;
+ esac
+done
+shift $((OPTIND - 1))
+
+
needs() {
if [ -z "${1:-}" ]; then
printf '%s\n' "$2" >&2
@@ -27,11 +46,10 @@ dateiso() {
datex "$1" -u "$DATE_Is"
}
-BASECONF="${1:-}"
-GLOBALCONF="${2:-}"
-FILENAME="${3:-}"
-eval "$(assert-arg -- "$BASECONF" 'BASECONF')"
-. "$(realpath -- "$BASECONF")"
+CONF="${1:-}"
+FILENAME="${2:-}"
+eval "$(assert-arg -- "$CONF" 'CONF')"
+. "$(realpath -- "$CONF")"
needs "${url_pre:-}" 'Missing required $url_pre (e.g. https://example.com)'
@@ -49,7 +67,7 @@ needs "${sourcecode_url:-}" 'Missing required $sourcecode_url'
needs "${sourcecode_url_prefix:-}" 'Missing required $sourcecode_url_prefix'
-if [ -z "$GLOBALCONF" ]; then
+if [ "$GENERATE" = true ]; then
now_iso="$(dateiso "@${SOURCE_DATE_EPOCH:-$(date '+%s')}" | shesc)"
feed_title_html="$(printf '%s\n' "$feed_title" | htmlesc | shesc)"
site_name_html="$( printf '%s\n' "$site_name" | htmlesc | shesc)"
@@ -58,6 +76,7 @@ if [ -z "$GLOBALCONF" ]; then
fi
logo_alt="$(printf '%s\n' "$logo_alt" | htmlesc | shesc)"
+ cat -- "$CONF"
cat <<-EOF
export now_iso="$now_iso"
export feed_title_html="$feed_title_html"
@@ -69,9 +88,7 @@ if [ -z "$GLOBALCONF" ]; then
exit
fi
-eval "$(assert-arg -- "$BASECONF" 'BASECONF')"
eval "$(assert-arg -- "$FILENAME" 'FILENAME')"
-. "$(realpath -- "$GLOBALCONF")"
trap 'rm -f -- "$FILENAME".embedded-config' EXIT
@@ -85,8 +102,8 @@ trap 'rm -f -- "$FILENAME".embedded-config' EXIT
is_article() {
printf '%s\n' "$FILENAME" | grep -qE \
- "^${root_dir}[-a-zA-Z0-9/]*/[0-9]{4}/[0-9]{2}/[0-9]{2}/[-A-Za-z0-9]+\.adoc$"
- #^ src /blog/d/a /1970 /01 /01/ /some-file-N4me.adoc
+ '^[-a-zA-Z0-9/]*/[0-9]{4}/[0-9]{2}/[0-9]{2}/[-A-Za-z0-9]+\.adoc$'
+ #^src/a/b/c/ /1970 /01 /01/ /some-file-N4me.adoc
}
base_url() {
@@ -109,7 +126,7 @@ datefmt() {
if [ -z "${root_dir:-}" ]; then
- root_dir="$(dirname -- "$BASECONF")"
+ root_dir="$(dirname -- "$CONF")"
fi
root_dir="${root_dir%/}"
@@ -120,7 +137,7 @@ img_dir="${img_dir%/}"
UNPREFIXED="${FILENAME#$root_dir/}"
-cat "$BASECONF" "$GLOBALCONF"
+cat -- "$CONF"
date_iso=
date_formatted=
diff --git a/src/feed b/src/feed
index 66d80e0..b22e363 100755
--- a/src/feed
+++ b/src/feed
@@ -3,14 +3,14 @@ set -euo pipefail
usage() {
- echo 'Usage: feed COMBINEDCONF FILENAME.sortdata...'
+ echo 'Usage: feed GLOBALCONF FILENAME.xmldeps'
}
-COMBINEDCONF="${1:-}"
-FILES="${2:-}"
-eval "$(assert-arg -- "$COMBINEDCONF" 'COMBINEDCONF')"
-eval "$(assert-arg -- "$FILES" 'FILENAME.sortdata...')"
-. "$(realpath -- "$COMBINEDCONF")"
+GLOBALCONF="${1:-}"
+FILENAME="${2:-}"
+eval "$(assert-arg -- "$GLOBALCONF" 'GLOBALCONF')"
+eval "$(assert-arg -- "$FILENAME" 'FILENAME.xmldeps')"
+. "$(realpath -- "$GLOBALCONF")"
shift
@@ -39,7 +39,7 @@ post() {
}
pre
-find "$@" |
+cat "$FILENAME" |
xargs cat |
sort -nr |
xargs cat |
diff --git a/src/indexbody b/src/indexbody
index 93b4f90..51090a6 100755
--- a/src/indexbody
+++ b/src/indexbody
@@ -3,19 +3,17 @@ set -euo pipefail
usage() {
- echo 'Usage: index FILENAME.conf FILENAME.sortdata...]'
+ echo 'Usage: index FILENAME.conf'
}
FILENAME="${1:-}"
-FILES="${2:-}"
eval "$(assert-arg -- "$FILENAME" 'FILENAME.conf')"
-eval "$(assert-arg -- "$FILES" 'FILENAME.sortdata...')"
. "$(realpath -- "$FILENAME")"
shift
printf ' <ol class="collection-list">\n'
-find "$@" |
+cat "${FILENAME%.*}.htmldeps" |
xargs cat |
sort -nr |
xargs cat |
diff --git a/src/sortdata b/src/sortdata
index df64e9f..c15d13c 100755
--- a/src/sortdata
+++ b/src/sortdata
@@ -11,6 +11,7 @@ eval "$(assert-arg -- "$FILENAME" 'FILENAME.conf')"
. "$(realpath -- "$FILENAME")"
-f=src/"$date_iso"-"${sort:-0}".sortdata
+DIR="$(dirname "$FILENAME")"/../../..
+f="$DIR"/"$date_iso"-"${sort:-0}".sortdata
printf '%s\n' "$FILENAME" > "$f"
printf '%s\n' "$f"