diff options
author | EuAndreh <eu@euandre.org> | 2024-11-17 18:01:46 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-11-17 18:33:15 -0300 |
commit | bdcfd72202b1ef58c46a6a503398fda7822771b7 (patch) | |
tree | c0945cef1fa653a2d1065c16d00a04d10e7c298b | |
parent | Makefile: Adapt code for mkwb-html subcommand (diff) | |
download | papo.im-bdcfd72202b1ef58c46a6a503398fda7822771b7.tar.gz papo.im-bdcfd72202b1ef58c46a6a503398fda7822771b7.tar.xz |
Update to latest mkwb to support multiple collections
-rw-r--r-- | .gitignore | 15 | ||||
-rw-r--r-- | Makefile | 72 | ||||
-rw-r--r-- | deps.mk | 56 | ||||
-rwxr-xr-x | mkdeps.sh | 55 | ||||
-rw-r--r-- | src/base.conf | 2 | ||||
l--------- | src/collections/blog | 1 | ||||
-rw-r--r-- | src/content/blog.adoc | 3 | ||||
-rw-r--r-- | src/content/blog/index.adoc | 3 | ||||
-rw-r--r-- | src/headers.txt | 2 | ||||
l--------- | src/pages/root | 1 |
10 files changed, 145 insertions, 65 deletions
@@ -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 @@ -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: @@ -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 + @@ -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 |