diff options
author | EuAndreh <eu@euandre.org> | 2025-04-03 15:36:16 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2025-04-03 15:36:16 -0300 |
commit | 55b752812db4a45278fc3ab65b4d435db9a77684 (patch) | |
tree | 73567ab6e477325f549b27efc89b4f98cad3786c | |
parent | Update deps.mk (diff) | |
download | papo.im-55b752812db4a45278fc3ab65b4d435db9a77684.tar.gz papo.im-55b752812db4a45278fc3ab65b4d435db9a77684.tar.xz |
Makefile: Generate .gz files and update to newer mkwb
-rw-r--r-- | .gitignore | 17 | ||||
-rw-r--r-- | Makefile | 127 | ||||
-rw-r--r-- | deps.mk | 45 | ||||
-rw-r--r-- | meta.json | 4 | ||||
-rwxr-xr-x | mkdeps.sh | 22 | ||||
-rw-r--r-- | src/content/public.asc | 0 |
6 files changed, 172 insertions, 43 deletions
@@ -1,4 +1,5 @@ *.htmlbody +*.embedded-config *.conf *.snippets *.html @@ -6,10 +7,20 @@ *.indexentry *.feedentry *.sortdata +sortdata.txt index.htmlheader index.htmlfooter index.htmllisting -index.htmldeps -feed.xmldeps feed.xml -/src/global.conf +*.gz +/src/sources.txt +/src/all-contents.txt +/src/all-snippets-list.txt +/src/install.txt +/sources.txt +/install.txt +/email.txt +/baseurl.txt +/expiry.txt +/src/content/security.txt +/src/content/.well-known/security.txt @@ -23,8 +23,9 @@ LDLIBS = .SUFFIXES: -.SUFFIXES: .adoc .conf .snippets .indexentry .feedentry .sortdata .xml .xmldeps +.SUFFIXES: .adoc .conf .snippets .indexentry .feedentry .sortdata .xml .SUFFIXES: .htmlbody .htmlheader .htmlfooter .htmllisting .html +.SUFFIXES: .gz .adoc.conf: mkwb conf src/global.conf $< > $@ @@ -66,6 +67,7 @@ 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.snippets.gz = $(sources.adoc:.adoc=.snippets.gz) sources.conf = $(sources.adoc:.adoc=.conf) articles.indexentry = $(articles.adoc:.adoc=.indexentry) articles.feedentry = $(articles.adoc:.adoc=.feedentry) @@ -73,16 +75,14 @@ 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) \ $(images.svg) \ src/content/style.css \ -contents = \ +dynamic-contents = \ $(sources.html) \ $(feeds.xml) \ @@ -90,34 +90,76 @@ static-contents = \ $(sources.extras) \ $(images.svg) \ src/content/style.css \ + src/content/.well-known/security.txt \ +dynamic-contents.gz = $(dynamic-contents:=.gz) -derived-assets = \ +static-contents.gz = \ + $(images.svg:=.gz) \ + src/content/style.css.gz \ + src/content/.well-known/security.txt.gz \ + +contents.gz = \ + $(dynamic-contents.gz) \ + $(static-contents.gz) \ + +contents = \ + $(dynamic-contents) \ + $(static-contents) \ + src/content/security.txt \ + src/content/security.txt.gz \ + +all-snippets = \ + $(sources.snippets) \ + $(sources.snippets.gz) \ + +all-contents = \ $(contents) \ + $(contents.gz) \ + + +derived-assets = \ + $(dynamic-contents) \ + $(contents.gz) \ $(sources.htmlbody) \ $(sources.snippets) \ + $(sources.snippets.gz) \ $(sources.conf) \ src/global.conf \ $(listings.htmlheader) \ $(listings.htmlfooter) \ $(listings.htmllisting) \ - $(listings.htmldeps) \ - $(feeds.xmldeps) \ $(articles.indexentry) \ $(articles.feedentry) \ $(articles.sortdata) \ + email.txt \ + baseurl.txt \ + expiry.txt \ + src/content/security.txt \ + src/content/security.txt.gz \ + src/content/.well-known/security.txt \ + src/all-contents.txt \ + src/all-snippets-list.txt \ + src/install.txt \ + src/sources.txt \ + install.txt \ + sources.txt \ side-assets = \ src/collections/*/*/*/*/*.html.*.txt \ + src/collections/*/*/*/*/*.html.*.txt.gz \ src/collections/*/index.html.*.txt \ + src/collections/*/sortdata.txt \ src/collections/*/*.sortdata \ src/pages/*/*.html.*.txt \ + src/content/.well-known/ \ ## Default target. Builds all artifacts required for testing ## and installation. all: $(derived-assets) +all: src/content/public.asc $(derived-assets): Makefile deps.mk @@ -131,7 +173,59 @@ $(listings.html): cat $*.htmlheader $*.htmllisting $*.htmlbody $*.htmlfooter > $@ $(feeds.xml): - mkwb feed src/global.conf $*.xmldeps > $@ + mkwb feed src/global.conf $(@D)/sortdata.txt > $@ + +$(contents.gz): + gzip -9fk $* + touch $@ + +$(sources.snippets.gz): + if [ -s $* ]; then gzip -9fk `cat $*`; fi + sed 's/$$/.gz/' $* > $@ + +src/content/public.asc: + gpg --export --armour "`jq -r '.email' < meta.json`" > $@ + +email.txt: meta.json + jq -r '.email' < meta.json > $@ + +baseurl.txt: meta.json + jq -r '.baseurl' < meta.json > $@ + +expiry.txt: src/content/public.asc + gpg --show-key --with-colons src/content/public.asc | \ + awk -F: '/^pub:/ { print $$7 }' | \ + xargs -I% date -Is -d@% > $@ + +src/content/security.txt.gz: src/content/.well-known/security.txt.gz +src/content/security.txt: src/content/.well-known/security.txt +src/content/security.txt src/content/security.txt.gz: + ln -fs .well-known/$(@F) $@ + +src/content/.well-known/security.txt.gz: src/content/.well-known/security.txt +src/content/.well-known/security.txt: email.txt baseurl.txt expiry.txt + mkdir -p $(@D) + printf 'Contact: mailto:%s\n' "`cat email.txt`" > $@ + printf 'Expires: %s\n' "`cat expiry.txt`" >> $@ + printf 'Encryption: %s/public.asc\n' "`cat baseurl.txt`" >> $@ + printf 'Preferred-Languages: en, pt, fr, eo, es\n' >> $@ + +src/sources.txt: + printf '%s\n' $(sources) > $@ + +src/all-contents.txt: + printf '%s\n' $(all-contents) > $@ + +src/all-snippets-list.txt: + printf '%s\n' $(all-snippets) > $@ + +src/install.txt: src/all-contents.txt src/all-snippets-list.txt $(all-snippets) + cat src/all-contents.txt `cat src/all-snippets-list.txt` > $@ + +sources.txt: src/sources.txt +install.txt: src/install.txt +sources.txt install.txt: + sed 's|^src/content/||' src/$(@F) > $@ @@ -163,19 +257,10 @@ clean: ## Installs into $(DESTDIR)$(PREFIX). Its dependency target ## ensures that all installable artifacts are crafted beforehand. install: all - mkdir -p \ - '$(DESTDIR)$(SRCDIR)' \ - - for f in $(contents) $(static-contents) `cat $(sources.snippets)`; do \ - dir='$(DESTDIR)$(HTMLDIR)'/"`dirname "$${f#src/content/}"`"; \ - mkdir -p "$$dir"; \ - cp -P "$$f" "$$dir"; \ - done - for f in $(sources); do \ - dir='$(DESTDIR)$(SRCDIR)'/"`dirname "$${f#src/content/}"`"; \ - mkdir -p "$$dir"; \ - cp -P "$$f" "$$dir"; \ - done + rsync --mkpath -a --files-from=install.txt src/content/ \ + '$(DESTDIR)$(HTMLDIR)' + rsync --mkpath -a --files-from=sources.txt src/content/ \ + '$(DESTDIR)$(SRCDIR)' ## Uninstalls from $(DESTDIR)$(PREFIX). This is a perfect mirror ## of the "install" target, and removes *all* that was installed. @@ -57,6 +57,29 @@ src/content/incidents/2000/01/01/service-start.html: src/content/incidents/2000/ src/content/blog/index.html: src/content/blog/index.conf src/content/blog/index.htmlbody src/content/incidents/index.html: src/content/incidents/index.conf src/content/incidents/index.htmlbody +src/content/about.html.gz: src/content/about.html +src/content/index.html.gz: src/content/index.html +src/content/pricing.html.gz: src/content/pricing.html +src/content/privacy.html.gz: src/content/privacy.html +src/content/terms.html.gz: src/content/terms.html +src/content/blog/1970/01/01/launch.html.gz: src/content/blog/1970/01/01/launch.html +src/content/blog/2000/01/01/feature-ann.html.gz: src/content/blog/2000/01/01/feature-ann.html +src/content/incidents/2000/01/01/service-start.html.gz: src/content/incidents/2000/01/01/service-start.html +src/content/blog/index.html.gz: src/content/blog/index.html +src/content/incidents/index.html.gz: src/content/incidents/index.html +src/content/about.snippets.gz: src/content/about.snippets +src/content/index.snippets.gz: src/content/index.snippets +src/content/pricing.snippets.gz: src/content/pricing.snippets +src/content/privacy.snippets.gz: src/content/privacy.snippets +src/content/terms.snippets.gz: src/content/terms.snippets +src/content/blog/1970/01/01/launch.snippets.gz: src/content/blog/1970/01/01/launch.snippets +src/content/blog/2000/01/01/feature-ann.snippets.gz: src/content/blog/2000/01/01/feature-ann.snippets +src/content/incidents/2000/01/01/service-start.snippets.gz: src/content/incidents/2000/01/01/service-start.snippets +src/content/blog/index.snippets.gz: src/content/blog/index.snippets +src/content/incidents/index.snippets.gz: src/content/incidents/index.snippets +src/content/blog/feed.xml.gz: src/content/blog/feed.xml +src/content/incidents/feed.xml.gz: src/content/incidents/feed.xml + 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/incidents/2000/01/01/service-start.feedentry: src/content/incidents/2000/01/01/service-start.conf src/content/incidents/2000/01/01/service-start.htmlbody @@ -66,8 +89,6 @@ src/content/incidents/2000/01/01/service-start.sortdata: src/content/incidents/2 src/content/blog/index.htmlheader src/content/blog/index.htmlfooter: src/content/blog/index.conf src/content/incidents/index.htmlheader src/content/incidents/index.htmlfooter: src/content/incidents/index.conf -src/content/blog/index.htmllisting: src/content/blog/index.htmldeps -src/content/incidents/index.htmllisting: src/content/incidents/index.htmldeps src/content/blog/index.html: src/content/blog/index.htmlheader src/content/blog/index.htmlfooter src/content/incidents/index.html: src/content/incidents/index.htmlheader src/content/incidents/index.htmlfooter src/content/blog/index.html: src/content/blog/index.htmllisting src/content/blog/index.htmlbody @@ -81,12 +102,12 @@ articles.blog.adoc = \ articles.blog.sortdata = $(articles.blog.adoc:.adoc=.sortdata) articles.blog.indexentry = $(articles.blog.adoc:.adoc=.indexentry) articles.blog.feedentry = $(articles.blog.adoc:.adoc=.feedentry) -src/content/blog/index.htmldeps: $(articles.blog.indexentry) -src/content/blog/feed.xmldeps: $(articles.blog.feedentry) -src/content/blog/index.htmldeps src/content/blog/feed.xmldeps: $(articles.blog.sortdata) - find $(articles.blog.sortdata) > $@ +src/content/blog/sortdata.txt: deps.mk + printf '%s\n' $(articles.blog.sortdata) > $@ -src/content/blog/feed.xml: src/content/blog/feed.xmldeps +src/content/blog/feed.xml src/content/blog/index.htmllisting: src/content/blog/sortdata.txt $(articles.blog.sortdata) +src/content/blog/index.htmllisting: $(articles.blog.indexentry) +src/content/blog/feed.xml: $(articles.blog.feedentry) articles.incidents.adoc = \ @@ -95,9 +116,9 @@ articles.incidents.adoc = \ articles.incidents.sortdata = $(articles.incidents.adoc:.adoc=.sortdata) articles.incidents.indexentry = $(articles.incidents.adoc:.adoc=.indexentry) articles.incidents.feedentry = $(articles.incidents.adoc:.adoc=.feedentry) -src/content/incidents/index.htmldeps: $(articles.incidents.indexentry) -src/content/incidents/feed.xmldeps: $(articles.incidents.feedentry) -src/content/incidents/index.htmldeps src/content/incidents/feed.xmldeps: $(articles.incidents.sortdata) - find $(articles.incidents.sortdata) > $@ +src/content/incidents/sortdata.txt: deps.mk + printf '%s\n' $(articles.incidents.sortdata) > $@ -src/content/incidents/feed.xml: src/content/incidents/feed.xmldeps +src/content/incidents/feed.xml src/content/incidents/index.htmllisting: src/content/incidents/sortdata.txt $(articles.incidents.sortdata) +src/content/incidents/index.htmllisting: $(articles.incidents.indexentry) +src/content/incidents/feed.xml: $(articles.incidents.feedentry) diff --git a/meta.json b/meta.json new file mode 100644 index 0000000..4899103 --- /dev/null +++ b/meta.json @@ -0,0 +1,4 @@ +{ + "baseurl": "https://papo.im", + "email": "support@papo.im" +} @@ -24,6 +24,8 @@ listings() { extras() { find src/content/ -type f \ + -name '*.flac' -or \ + -name '*.webm' -or \ -name '*.tar.gz' } @@ -46,12 +48,16 @@ files | sed 's/^\(.*\)\.adoc$/\1.htmlbody\t\1.snippets\t\1.conf:\t\1.adoc/' files | sed 's/^\(.*\)\.adoc$/\1.html:\t\1.conf\t\1.htmlbody/' printf '\n' +files | sed 's/^\(.*\)\.adoc$/\1.html.gz:\t\1.html/' +files | sed 's/^\(.*\)\.adoc$/\1.snippets.gz:\t\1.snippets/' +listings | sed 's|^\(.*\)/index\.adoc$|\1/feed.xml.gz:\t\1/feed.xml|' +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/' @@ -69,11 +75,13 @@ for colllink in src/collections/*; do "$name" 'feedentry ' "$name" 'feedentry' - printf '%s/index.htmldeps: $(articles.%s.indexentry)\n' "$c" "$name" - printf '%s/feed.xmldeps: $(articles.%s.feedentry)\n' "$c" "$name" + printf '%s/sortdata.txt:\tdeps.mk\n' "$c" + printf '\tprintf %s $(articles.%s.sortdata) > $@\n\n' \ + "'%s\n'" "$name" + + printf '%s/feed.xml\t%s/index.htmllisting:' "$c" "$c" + printf '\t%s/sortdata.txt\t$(articles.%s.sortdata)\n' "$c" "$name" - printf '%s/index.htmldeps %s/feed.xmldeps: $(articles.%s.sortdata)\n' \ - "$c" "$c" "$name" - printf '\tfind $(articles.%s.sortdata) > $@\n\n' "$name" - printf '%s/feed.xml:\t%s/feed.xmldeps\n' "$c" "$c" + printf '%s/index.htmllisting:\t$(articles.%s.indexentry)\n' "$c" "$name" + printf '%s/feed.xml:\t$(articles.%s.feedentry)\n' "$c" "$name" done diff --git a/src/content/public.asc b/src/content/public.asc new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/content/public.asc |