summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-11-17 18:01:46 -0300
committerEuAndreh <eu@euandre.org>2024-11-17 18:33:15 -0300
commitbdcfd72202b1ef58c46a6a503398fda7822771b7 (patch)
treec0945cef1fa653a2d1065c16d00a04d10e7c298b
parentMakefile: Adapt code for mkwb-html subcommand (diff)
downloadpapo.im-bdcfd72202b1ef58c46a6a503398fda7822771b7.tar.gz
papo.im-bdcfd72202b1ef58c46a6a503398fda7822771b7.tar.xz
Update to latest mkwb to support multiple collections
-rw-r--r--.gitignore15
-rw-r--r--Makefile72
-rw-r--r--deps.mk56
-rwxr-xr-xmkdeps.sh55
-rw-r--r--src/base.conf2
l---------src/collections/blog1
-rw-r--r--src/content/blog.adoc3
-rw-r--r--src/content/blog/index.adoc3
-rw-r--r--src/headers.txt2
l---------src/pages/root1
10 files changed, 145 insertions, 65 deletions
diff --git a/.gitignore b/.gitignore
index 465c6cf..563ca1e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,12 +6,21 @@
/src/content/*/*/*/*/*.indexentry
/src/content/*/*/*/*/*.feedentry
/src/content/*/*/*/*/*.sortdata
+/src/content/*/index.htmlbody
+/src/content/*/index.htmlheader
+/src/content/*/index.htmlfooter
+/src/content/*/index.htmllisting
+/src/content/*/index.htmldeps
+/src/content/*/index.conf
+/src/content/*/index.snippets
+/src/content/*/index.html
+/src/content/*/index.html.*.txt
+/src/content/*/feed.xmldeps
+/src/content/*/feed.xml
+/src/content/*/*.sortdata
/src/content/*.htmlbody
/src/content/*.conf
/src/content/*.snippets
/src/content/*.html
/src/content/*.txt
-/src/content/*.xml
-/src/*.sortdata
/src/global.conf
-/src/combined.conf
diff --git a/Makefile b/Makefile
index 7fa49f8..4a2a8cf 100644
--- a/Makefile
+++ b/Makefile
@@ -23,11 +23,11 @@ LDLIBS =
.SUFFIXES:
-.SUFFIXES: .adoc .htmlbody .conf .snippets .html .indexentry .feedentry
-.SUFFIXES: .sortdata .xml
+.SUFFIXES: .adoc .conf .snippets .indexentry .feedentry .sortdata .xml .xmldeps
+.SUFFIXES: .htmlbody .htmlheader .htmlfooter .htmllisting .html
.adoc.conf:
- mkwb conf src/base.conf src/global.conf $< > $@
+ mkwb conf src/global.conf $< > $@
.adoc.htmlbody:
mkwb htmlbody $< > $@
@@ -35,6 +35,15 @@ LDLIBS =
.htmlbody.html:
mkwb html $< > $@
+.conf.htmlheader:
+ mkwb html -H $< > $@
+
+.conf.htmlfooter:
+ mkwb html -F $< > $@
+
+.conf.htmllisting:
+ mkwb indexbody $< > $@
+
.adoc.snippets:
mkwb snippets $< > $@
@@ -53,14 +62,20 @@ all:
include deps.mk
-sources.adoc = $(articles.adoc) $(pages.adoc)
-sources.htmlbody = $(sources.adoc:.adoc=.htmlbody)
-sources.html = $(sources.adoc:.adoc=.html)
-sources.snippets = $(sources.adoc:.adoc=.snippets)
-sources.conf = $(sources.adoc:.adoc=.conf)
-articles.indexentry = $(articles.adoc:.adoc=.indexentry)
-articles.feedentry = $(articles.adoc:.adoc=.feedentry)
-articles.sortdata = $(articles.adoc:.adoc=.sortdata)
+sources.adoc = $(articles.adoc) $(listings.adoc) $(pages.adoc)
+sources.htmlbody = $(sources.adoc:.adoc=.htmlbody)
+sources.html = $(sources.adoc:.adoc=.html)
+sources.snippets = $(sources.adoc:.adoc=.snippets)
+sources.conf = $(sources.adoc:.adoc=.conf)
+articles.indexentry = $(articles.adoc:.adoc=.indexentry)
+articles.feedentry = $(articles.adoc:.adoc=.feedentry)
+articles.sortdata = $(articles.adoc:.adoc=.sortdata)
+listings.htmlheader = $(listings.adoc:.adoc=.htmlheader)
+listings.htmlfooter = $(listings.adoc:.adoc=.htmlfooter)
+listings.htmllisting = $(listings.adoc:.adoc=.htmllisting)
+listings.htmldeps = $(listings.adoc:.adoc=.htmldeps)
+listings.html = $(listings.adoc:.adoc=.html)
+feeds.xmldeps = $(feeds.xml:.xml=.xmldeps)
sources = \
$(sources.adoc) \
@@ -69,7 +84,7 @@ sources = \
contents = \
$(sources.html) \
- src/content/atom.xml \
+ $(feeds.xml) \
static-contents = \
$(images.svg) \
@@ -82,15 +97,20 @@ derived-assets = \
$(sources.snippets) \
$(sources.conf) \
src/global.conf \
- src/combined.conf \
+ $(listings.htmlheader) \
+ $(listings.htmlfooter) \
+ $(listings.htmllisting) \
+ $(listings.htmldeps) \
+ $(feeds.xmldeps) \
$(articles.indexentry) \
$(articles.feedentry) \
$(articles.sortdata) \
side-assets = \
- src/content/*/*/*/*/*.html.*.txt \
- src/content/*.html.*.txt \
- src/*.sortdata \
+ src/collections/*/*/*/*/*.html.*.txt \
+ src/collections/*/index.html.*.txt \
+ src/collections/*/*.sortdata \
+ src/pages/*/*.html.*.txt \
@@ -100,25 +120,17 @@ all: $(derived-assets)
$(derived-assets): Makefile deps.mk
-$(sources.conf): src/global.conf
-$(sources.html): src/headers.txt
+$(sources.conf): src/global.conf src/headers.txt
src/global.conf: src/base.conf
- mkwb conf src/base.conf > $@
-
-src/combined.conf: src/base.conf src/global.conf
- cat src/base.conf src/global.conf > $@
-
-src/content/atom.xml src/content/blog.html: $(articles.sortdata) \
- src/combined.conf
-
-src/content/atom.xml: $(articles.feedentry)
- mkwb feed src/combined.conf $(articles.sortdata) > $@
+ mkwb conf -G src/base.conf > $@
-src/content/blog.html: $(articles.indexentry) src/content/blog.htmlbody
- mkwb indexbody $*.conf $(articles.sortdata) | mkwb html $*.htmlbody > $@
+$(listings.html):
+ cat $*.htmlheader $*.htmllisting $*.htmlbody $*.htmlfooter > $@
+$(feeds.xml):
+ mkwb feed src/global.conf $*.xmldeps > $@
check-unit:
diff --git a/deps.mk b/deps.mk
index 52096cc..6458875 100644
--- a/deps.mk
+++ b/deps.mk
@@ -1,15 +1,20 @@
-articles.adoc = \
- src/content/blog/1970/01/01/launch.adoc \
- src/content/blog/2000/01/01/feature-ann.adoc \
-
pages.adoc = \
src/content/about.adoc \
- src/content/blog.adoc \
src/content/index.adoc \
src/content/pricing.adoc \
src/content/privacy.adoc \
src/content/terms.adoc \
+articles.adoc = \
+ src/content/blog/1970/01/01/launch.adoc \
+ src/content/blog/2000/01/01/feature-ann.adoc \
+
+listings.adoc = \
+ src/content/blog/index.adoc \
+
+feeds.xml = \
+ src/content/blog/feed.xml \
+
images.svg = \
src/content/img/atom.svg \
src/content/img/database/dark.svg \
@@ -26,31 +31,44 @@ images.svg = \
src/content/img/shield/dark.svg \
src/content/img/shield/light.svg \
-src/content/blog/1970/01/01/launch.htmlbody src/content/blog/1970/01/01/launch.snippets src/content/blog/1970/01/01/launch.conf: src/content/blog/1970/01/01/launch.adoc
-src/content/blog/2000/01/01/feature-ann.htmlbody src/content/blog/2000/01/01/feature-ann.snippets src/content/blog/2000/01/01/feature-ann.conf: src/content/blog/2000/01/01/feature-ann.adoc
src/content/about.htmlbody src/content/about.snippets src/content/about.conf: src/content/about.adoc
-src/content/blog.htmlbody src/content/blog.snippets src/content/blog.conf: src/content/blog.adoc
src/content/index.htmlbody src/content/index.snippets src/content/index.conf: src/content/index.adoc
src/content/pricing.htmlbody src/content/pricing.snippets src/content/pricing.conf: src/content/pricing.adoc
src/content/privacy.htmlbody src/content/privacy.snippets src/content/privacy.conf: src/content/privacy.adoc
src/content/terms.htmlbody src/content/terms.snippets src/content/terms.conf: src/content/terms.adoc
-src/content/blog/1970/01/01/launch.snippets: src/content/blog/1970/01/01/launch.adoc
-src/content/blog/2000/01/01/feature-ann.snippets: src/content/blog/2000/01/01/feature-ann.adoc
-src/content/about.snippets: src/content/about.adoc
-src/content/blog.snippets: src/content/blog.adoc
-src/content/index.snippets: src/content/index.adoc
-src/content/pricing.snippets: src/content/pricing.adoc
-src/content/privacy.snippets: src/content/privacy.adoc
-src/content/terms.snippets: src/content/terms.adoc
-src/content/blog/1970/01/01/launch.html: src/content/blog/1970/01/01/launch.conf src/content/blog/1970/01/01/launch.htmlbody
-src/content/blog/2000/01/01/feature-ann.html: src/content/blog/2000/01/01/feature-ann.conf src/content/blog/2000/01/01/feature-ann.htmlbody
+src/content/blog/1970/01/01/launch.htmlbody src/content/blog/1970/01/01/launch.snippets src/content/blog/1970/01/01/launch.conf: src/content/blog/1970/01/01/launch.adoc
+src/content/blog/2000/01/01/feature-ann.htmlbody src/content/blog/2000/01/01/feature-ann.snippets src/content/blog/2000/01/01/feature-ann.conf: src/content/blog/2000/01/01/feature-ann.adoc
+src/content/blog/index.htmlbody src/content/blog/index.snippets src/content/blog/index.conf: src/content/blog/index.adoc
src/content/about.html: src/content/about.conf src/content/about.htmlbody
-src/content/blog.html: src/content/blog.conf src/content/blog.htmlbody
src/content/index.html: src/content/index.conf src/content/index.htmlbody
src/content/pricing.html: src/content/pricing.conf src/content/pricing.htmlbody
src/content/privacy.html: src/content/privacy.conf src/content/privacy.htmlbody
src/content/terms.html: src/content/terms.conf src/content/terms.htmlbody
+src/content/blog/1970/01/01/launch.html: src/content/blog/1970/01/01/launch.conf src/content/blog/1970/01/01/launch.htmlbody
+src/content/blog/2000/01/01/feature-ann.html: src/content/blog/2000/01/01/feature-ann.conf src/content/blog/2000/01/01/feature-ann.htmlbody
+src/content/blog/index.html: src/content/blog/index.conf src/content/blog/index.htmlbody
+
src/content/blog/1970/01/01/launch.feedentry: src/content/blog/1970/01/01/launch.conf src/content/blog/1970/01/01/launch.htmlbody
src/content/blog/2000/01/01/feature-ann.feedentry: src/content/blog/2000/01/01/feature-ann.conf src/content/blog/2000/01/01/feature-ann.htmlbody
src/content/blog/1970/01/01/launch.sortdata: src/content/blog/1970/01/01/launch.conf
src/content/blog/2000/01/01/feature-ann.sortdata: src/content/blog/2000/01/01/feature-ann.conf
+
+src/content/blog/index.htmlheader src/content/blog/index.htmlfooter: src/content/blog/index.conf
+src/content/blog/index.htmllisting: src/content/blog/index.htmldeps
+src/content/blog/index.html: src/content/blog/index.htmlheader src/content/blog/index.htmlfooter
+src/content/blog/index.html: src/content/blog/index.htmllisting src/content/blog/index.htmlbody
+
+
+articles.blog.adoc = \
+ src/content/blog/1970/01/01/launch.adoc \
+ src/content/blog/2000/01/01/feature-ann.adoc \
+
+articles.blog.sortdata = $(articles.blog.adoc:.adoc=.sortdata)
+src/content/blog/index.htmldeps: $(articles.blog.sortdata)
+ find $(articles.blog.sortdata) > $@
+
+src/content/blog/feed.xmldeps: $(articles.blog.sortdata)
+ find $(articles.blog.sortdata) > $@
+
+src/content/blog/feed.xml: src/content/blog/feed.xmldeps
+
diff --git a/mkdeps.sh b/mkdeps.sh
index e2ba064..6288bf8 100755
--- a/mkdeps.sh
+++ b/mkdeps.sh
@@ -4,27 +4,66 @@ set -eu
export LANG=POSIX.UTF-8
-articles() {
- find src/content/*/ -type f -name '*.adoc' | sort
+normalize() {
+ xargs realpath |
+ awk -vPWD="$PWD/" '{ print substr($0, length(PWD) + 1) }' |
+ sort
}
pages() {
- find src/content/*.adoc -type f | sort
+ find src/pages/*/*.adoc -type f | normalize
+}
+
+articles() {
+ find src/collections/*/*/ -type f -name '*.adoc' | normalize
+}
+
+listings() {
+ find src/collections/*/index.adoc | normalize
}
files() {
- articles
pages
+ articles
+ listings
}
-articles | varlist 'articles.adoc'
-pages | varlist 'pages.adoc'
-find src/content/img/ -name '*.svg' | varlist 'images.svg'
+pages | varlist 'pages.adoc'
+articles | varlist 'articles.adoc'
+listings | varlist 'listings.adoc'
+listings | sed 's|/index\.adoc$|/feed.xml|' | varlist 'feeds.xml'
+find src/content/img/ -name '*.svg' | varlist 'images.svg'
files | sed 's/^\(.*\)\.adoc$/\1.htmlbody\t\1.snippets\t\1.conf:\t\1.adoc/'
-files | sed 's/^\(.*\)\.adoc$/\1.snippets:\t\1.adoc/'
files | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.conf\t\1.htmlbody/'
+printf '\n'
+
articles | sed 's/^\(.*\)\.adoc$/\1.feedentry:\t\1.conf\t\1.htmlbody/'
articles | sed 's/^\(.*\)\.adoc$/\1.sortdata:\t\1.conf/'
+printf '\n'
+
+listings | sed 's/^\(.*\)\.adoc$/\1.htmlheader\t\1.htmlfooter:\t\1.conf/'
+listings | sed 's/^\(.*\)\.adoc$/\1.htmllisting:\t\1.htmldeps/'
+listings | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.htmlheader\t\1.htmlfooter/'
+listings | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.htmllisting\t\1.htmlbody/'
+
+for colllink in src/collections/*; do
+ c="$(printf '%s' "$colllink" | normalize)"
+
+ printf '\n'
+ printf '\n'
+ name="$(basename "$c")"
+ find "$c"/*/ -type f -name '*.adoc' | varlist "articles.$name.adoc"
+ printf \
+ 'articles.%s.sortdata = $(articles.%s.adoc:.adoc=.sortdata)\n' \
+ "$name" "$name"
+
+
+ printf '%s/index.htmldeps: $(articles.%s.sortdata)\n' "$c" "$name"
+ printf '\tfind $(articles.%s.sortdata) > $@\n\n' "$name"
+ printf '%s/feed.xmldeps: $(articles.%s.sortdata)\n' "$c" "$name"
+ printf '\tfind $(articles.%s.sortdata) > $@\n\n' "$name"
+ printf '%s/feed.xml:\t%s/feed.xmldeps\n\n' "$c" "$c"
+done
diff --git a/src/base.conf b/src/base.conf
index c21a238..22358f0 100644
--- a/src/base.conf
+++ b/src/base.conf
@@ -10,4 +10,4 @@ export author='papo.im'
export site_name='Papo'
export feed_title='Articles from papo.im'
export feed_url='atom.xml'
-export feed_alternate_url='blog.html'
+export feed_alternate_url='./blog/'
diff --git a/src/collections/blog b/src/collections/blog
new file mode 120000
index 0000000..8c3a331
--- /dev/null
+++ b/src/collections/blog
@@ -0,0 +1 @@
+../content/blog \ No newline at end of file
diff --git a/src/content/blog.adoc b/src/content/blog.adoc
deleted file mode 100644
index 2119a57..0000000
--- a/src/content/blog.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-= Blog
-
-== Recent articles link:atom.xml[image:img/atom.svg[Standard orange RSS feed icon]]
diff --git a/src/content/blog/index.adoc b/src/content/blog/index.adoc
new file mode 100644
index 0000000..7e46f04
--- /dev/null
+++ b/src/content/blog/index.adoc
@@ -0,0 +1,3 @@
+= Blog
+
+== Recent articles link:atom.xml[image:../img/atom.svg[Standard orange RSS feed icon]]
diff --git a/src/headers.txt b/src/headers.txt
index 52af056..b912d77 100644
--- a/src/headers.txt
+++ b/src/headers.txt
@@ -1,3 +1,3 @@
pricing.html Pricing
about.html About
-blog.html Blog
+blog/ Blog
diff --git a/src/pages/root b/src/pages/root
new file mode 120000
index 0000000..efcdaa6
--- /dev/null
+++ b/src/pages/root
@@ -0,0 +1 @@
+../content \ No newline at end of file