.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)