diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 142 |
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) |
