summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-04-05 14:52:38 -0300
committerEuAndreh <eu@euandre.org>2025-04-05 14:52:38 -0300
commit46222bba365f4ea2e23bab295ede7abb13cdfb1e (patch)
treeb4643ea6398950214936f220b54ae517cab1e709 /Makefile
parentMakefile: Prevent CI from trying to look at ~/.gnupg (diff)
downloadpapo.im-46222bba365f4ea2e23bab295ede7abb13cdfb1e.tar.gz
papo.im-46222bba365f4ea2e23bab295ede7abb13cdfb1e.tar.xz
Makefile: Update to match Makefile in euandre.org
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile72
1 files changed, 64 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index 95e9b4e..e6227ce 100644
--- a/Makefile
+++ b/Makefile
@@ -19,12 +19,13 @@ EXEC = ./
## Where to store the installation. Empty by default.
DESTDIR =
LDLIBS =
+PUBURL = public.asc
.SUFFIXES:
.SUFFIXES: .adoc .conf .snippets .indexentry .feedentry .sortdata .xml
-.SUFFIXES: .htmlbody .htmlheader .htmlfooter .htmllisting .html
+.SUFFIXES: .htmlbody .htmlheader .htmlfooter .htmllisting .html .links .caslinks
.SUFFIXES: .gz
.adoc.conf:
@@ -57,6 +58,14 @@ LDLIBS =
.conf.sortdata:
mkwb sortdata $< > $@
+.adoc.links:
+ mkwb links $< > $@
+
+.links.caslinks:
+ grep -v '^link:' $< | xargs -I_ sh -c '\
+ printf "%s\n" "_" | sha256sum | \
+ printf "%s\t%s\n" "`cut -d" " -f1`" "_"' > $@
+
all:
@@ -69,6 +78,8 @@ 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)
+sources.links = $(sources.adoc:.adoc=.links)
+sources.caslinks = $(sources.adoc:.adoc=.caslinks)
articles.indexentry = $(articles.adoc:.adoc=.indexentry)
articles.feedentry = $(articles.adoc:.adoc=.feedentry)
articles.sortdata = $(articles.adoc:.adoc=.sortdata)
@@ -79,8 +90,11 @@ listings.html = $(listings.adoc:.adoc=.html)
sources = \
$(sources.adoc) \
+ $(sources.extras) \
$(images.svg) \
+ src/content/favicon.ico \
src/content/style.css \
+ src/content/$(PUBURL) \
dynamic-contents = \
$(sources.html) \
@@ -89,14 +103,18 @@ dynamic-contents = \
static-contents = \
$(sources.extras) \
$(images.svg) \
+ src/content/favicon.ico \
src/content/style.css \
+ src/content/$(PUBURL) \
src/content/.well-known/security.txt \
dynamic-contents.gz = $(dynamic-contents:=.gz)
static-contents.gz = \
$(images.svg:=.gz) \
+ src/content/favicon.ico.gz \
src/content/style.css.gz \
+ src/content/$(PUBURL).gz \
src/content/.well-known/security.txt.gz \
contents.gz = \
@@ -124,7 +142,11 @@ derived-assets = \
$(sources.htmlbody) \
$(sources.snippets) \
$(sources.snippets.gz) \
+ $(sources.links) \
+ $(sources.caslinks) \
$(sources.conf) \
+ src/dyn.conf \
+ src/base.conf \
src/global.conf \
$(listings.htmlheader) \
$(listings.htmlfooter) \
@@ -134,6 +156,7 @@ derived-assets = \
$(articles.sortdata) \
email.txt \
baseurl.txt \
+ fingerprint.txt \
expiry.txt \
src/content/security.txt \
src/content/security.txt.gz \
@@ -159,13 +182,23 @@ side-assets = \
## Default target. Builds all artifacts required for testing
## and installation.
all: $(derived-assets)
-all: src/content/public.asc
+all: src/content/$(PUBURL) src/content/favicon.ico
$(derived-assets): Makefile deps.mk
$(sources.conf): src/global.conf src/headers.txt
+src/dyn.conf: email.txt baseurl.txt fingerprint.txt
+ printf "export url_pre='%s'\n" "`cat baseurl.txt`" > $@
+ printf "export email='%s'\n" "`cat email.txt`" >> $@
+ printf "export publickey='%s'\n" "`cat fingerprint.txt`" >> $@
+ printf "export publickey_url='$(PUBURL)'\n" >> $@
+ printf 'export sourcecode_url="$$url_pre/git/$(NAME)"\n' >> $@
+
+src/base.conf: src/dyn.conf src/static.conf
+ cat src/dyn.conf src/static.conf > $@
+
src/global.conf: src/base.conf
mkwb conf -G src/base.conf > $@
@@ -177,24 +210,34 @@ $(feeds.xml):
$(contents.gz):
gzip -9fk $*
- touch $@
+ touch $@
$(sources.snippets.gz):
if [ -s $* ]; then gzip -9fk `cat $*`; fi
sed 's/$$/.gz/' $* > $@
-src/content/public.asc:
+src/content/$(PUBURL).gz: src/content/$(PUBURL)
+src/content/$(PUBURL):
gpg --export --armour "`jq -r '.email' < meta.json`" > $@
+src/content/favicon.ico.gz: src/content/favicon.ico
+src/content/favicon.ico: src/content/img/favicon.svg
+ convert src/content/img/favicon.svg $@
+
email.txt: meta.json
jq -r '.email' < meta.json > $@
baseurl.txt: meta.json
jq -r '.baseurl' < meta.json > $@
-expiry.txt: src/content/public.asc
+fingerprint.txt: src/content/$(PUBURL)
+ gpg --always-trust --no-keyring --show-key --with-colons \
+ src/content/$(PUBURL) | \
+ awk -F: '/^pub:/ { print $$5 }' > $@
+
+expiry.txt: src/content/$(PUBURL)
gpg --always-trust --no-keyring --show-key --with-colons \
- src/content/public.asc | \
+ src/content/$(PUBURL) | \
awk -F: '/^pub:/ { print $$7 }' | \
xargs -I% date -Is -d@% > $@
@@ -208,7 +251,7 @@ 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 'Encryption: %s/$(PUBURL)\n' "`cat baseurl.txt`" >> $@
printf 'Preferred-Languages: en, pt, fr, eo, es\n' >> $@
src/sources.txt:
@@ -230,7 +273,20 @@ sources.txt install.txt:
-check-unit:
+.SUFFIXES: .links-check-internal
+sources.links-check-internal = $(sources.adoc:.adoc=.links-check-internal)
+$(sources.links-check-internal): $(sources.html)
+ grep '^link:' $*.links | cut -d: -f2- | xargs -tI% test -e $(*D)/%
+
+check-internal: $(sources.links-check-internal)
+
+
+check-external:
+
+
+check-links: check-internal check-external
+
+check-unit: check-links
integration-tests = \