aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile142
1 files changed, 142 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..9907b46
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,142 @@
+.POSIX:
+
+
+pod2man = \
+ share/man/man1/x.1 \
+ share/man/man1/z.1 \
+
+
+lisp-images = \
+ $(XDG_DATA_HOME)/lisp-cli/clozure.image \
+ $(XDG_DATA_HOME)/lisp-cli/clisp.image \
+ $(XDG_DATA_HOME)/lisp-cli/sbcl.image \
+
+derived-assets = \
+ $(pod2man) \
+ $(XDG_CONFIG_HOME)/ssh/id_rsa.pub \
+ $(XDG_CONFIG_HOME)/git/config-extra \
+ $(XDG_CONFIG_HOME)/gnupg/gpg-agent.conf \
+ $(XDG_CONFIG_HOME)/remhind/config \
+ $(XDG_CONFIG_HOME)/ssh/config \
+ $(XDG_CONFIG_HOME)/alot/config \
+ $(XDG_CONFIG_HOME)/mbsync/config \
+ $(XDG_CONFIG_HOME)/msmtp/config \
+ $(XDG_CONFIG_HOME)/notmuch/default/config \
+ $(XDG_CONFIG_HOME)/notmuch/default/hooks/post-new \
+ $(XDG_DATA_HOME)/euandreh/mailcfg-accounts.txt \
+ $(XDG_DATA_HOME)/common-lisp/source \
+ $(XDG_DATA_HOME)/euandreh/e.list.txt \
+ $(lisp-images)
+
+
+all: $(derived-assets)
+
+
+share/man/man1/x.1: bin/x
+ pod2man bin/x > $@
+
+share/man/man1/z.1: bin/z
+ pod2man bin/z > $@
+
+$(XDG_DATA_HOME)/common-lisp/source:
+ ln -s $(SRC)/libre $@
+
+$(XDG_CONFIG_HOME)/alot/config: bin/mailcfg
+ mailcfg alot > $@
+
+$(XDG_CONFIG_HOME)/mbsync/config: bin/mailcfg
+ mailcfg mbsync > $@
+
+$(XDG_CONFIG_HOME)/msmtp/config: bin/mailcfg
+ mailcfg msmtp > $@
+
+$(XDG_CONFIG_HOME)/notmuch/default/config: bin/mailcfg
+ mailcfg notmuchcfg > $@
+
+$(XDG_CONFIG_HOME)/notmuch/default/hooks/post-new: bin/mailcfg
+ mailcfg notmuchhook > $@
+ chmod +x $@
+
+$(XDG_DATA_HOME)/euandreh/mailcfg-accounts.txt: bin/mailcfg
+ mailcfg list > $@
+
+$(XDG_CONFIG_HOME)/ssh/id_rsa.pub:
+ gpg --export-ssh-key eu@euandre.org > $@
+ chmod 600 $@
+
+$(XDG_CONFIG_HOME)/remhind/config: $(XDG_CONFIG_HOME)/remhind/config.tmpl
+ envsubst < $(XDG_CONFIG_HOME)/remhind/config.tmpl > $@
+
+$(XDG_CONFIG_HOME)/ssh/config: $(XDG_CONFIG_HOME)/ssh/config.tmpl
+ envsubst < $(XDG_CONFIG_HOME)/ssh/config.tmpl > $@
+
+$(XDG_CONFIG_HOME)/git/config-extra:
+ printf '[sendemail]\n smtpserver = ' > $@
+ command -v msmtpq >> $@
+
+$(XDG_CONFIG_HOME)/gnupg/gpg-agent.conf: $(XDG_CONFIG_HOME)/gnupg/gpg-agent.conf.tmpl
+ cp $(XDG_CONFIG_HOME)/gnupg/gpg-agent.conf.tmpl $@
+ printf 'pinentry-program ' >> $@
+ command -v pinentry-gtk-2 >> $@
+
+$(XDG_DATA_HOME)/euandreh/e.list.txt: ~/Documents/txt/ opt/aux/gen-e-list.sh
+ sh opt/aux/gen-e-list.sh > $@
+
+$(lisp-images): $(XDG_CONFIG_HOME)/lisp-cli/init.lisp bin/cl bin/li
+ I=`echo $@ | awk -F/ '$$0=$$(NF)' | cut -d. -f1` && \
+ li -vI $$I -E "(format t \"Image for \\\"$$I\\\" created.~%\")"
+
+
+
+check-shellcheck:
+ git ls-files | \
+ sor 'test -f' | \
+ xargs awk '/^#!\/bin\/sh$$/ { print FILENAME } { nextfile }' | \
+ xargs shellcheck -x
+
+check-perlcritic:
+ git ls-files | \
+ sor 'test -f' | \
+ xargs awk '/^#!\/usr\/bin\/env perl$$/ { print FILENAME } { nextfile }' | \
+ xargs perlcritic --exclude=subroutine
+
+FIXME-excludes = \
+ ':(exclude)Makefile' \
+ ':(exclude)etc/git/ignore' \
+ ':(exclude)opt/aux/gen-e-list.sh'
+check-fixme:
+ if git grep FIXME -- $(FIXME-excludes); then \
+ printf 'Leftover FIXME markers.\n' >&2; \
+ exit 1; \
+ fi
+
+check-dirty-public:
+ if ! git diff --quiet || ! git diff --quiet --staged; then \
+ printf 'Dirty tilde repository.\n' >&2; \
+ exit 1; \
+ fi
+
+check-dirty-private:
+ if ! git -C $(PRIV_CONFIG) diff --quiet || \
+ ! git -C $(PRIV_CONFIG) diff --quiet --staged; then \
+ printf 'Dirty private tilde repository.\n' >&2; \
+ exit 1; \
+ fi
+
+check-opt:
+ find opt/tests/ -name '*.sh' -exec {} +
+
+check-pod:
+ podchecker bin/z
+
+check-sync:
+ if git status --short --branch --porcelain | head -n1 | grep -E '(ahead|behind)'; then \
+ printf 'Out of sync with origin.\n' >&2; \
+ exit 1; \
+ fi
+
+check: check-shellcheck check-perlcritic check-fixme check-dirty-public \
+ check-dirty-private check-opt check-pod check-sync
+
+clean:
+ rm -f $(derived-assets)