summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-04-03 15:36:16 -0300
committerEuAndreh <eu@euandre.org>2025-04-03 15:36:16 -0300
commit55b752812db4a45278fc3ab65b4d435db9a77684 (patch)
tree73567ab6e477325f549b27efc89b4f98cad3786c
parentUpdate deps.mk (diff)
downloadpapo.im-55b752812db4a45278fc3ab65b4d435db9a77684.tar.gz
papo.im-55b752812db4a45278fc3ab65b4d435db9a77684.tar.xz
Makefile: Generate .gz files and update to newer mkwb
-rw-r--r--.gitignore17
-rw-r--r--Makefile127
-rw-r--r--deps.mk45
-rw-r--r--meta.json4
-rwxr-xr-xmkdeps.sh22
-rw-r--r--src/content/public.asc0
6 files changed, 172 insertions, 43 deletions
diff --git a/.gitignore b/.gitignore
index d457578..036d4c0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/Makefile b/Makefile
index 914d99a..6a95693 100644
--- a/Makefile
+++ b/Makefile
@@ -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.
diff --git a/deps.mk b/deps.mk
index 6fb728b..6c75183 100644
--- a/deps.mk
+++ b/deps.mk
@@ -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"
+}
diff --git a/mkdeps.sh b/mkdeps.sh
index 2b5bc0f..e9141f9 100755
--- a/mkdeps.sh
+++ b/mkdeps.sh
@@ -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