diff options
author | Ryan Kavanagh <ryanakca@kubuntu.org> | 2011-08-16 21:16:41 -0400 |
---|---|---|
committer | Ryan Kavanagh <ryanakca@kubuntu.org> | 2011-08-25 07:43:05 -0400 |
commit | 25af40e8ad087b1c86a85b3075b8fd4c35d79a81 (patch) | |
tree | 4de9f1eedaa052eaee52660ee3bc8ae5da48c429 /dm | |
parent | Fixed detach sig signing (diff) |
Rename executable makefile to dm
Diffstat (limited to 'dm')
-rwxr-xr-x | dm | 135 |
1 files changed, 135 insertions, 0 deletions
@@ -0,0 +1,135 @@ +#!gmake -f +SUBSTS_FILE=SUBSTS.local + +# Files that need changes to work locally or that contain sensitive +# information +LOCAL_FILES = \ + .imapfilter/config.lua \ + .mutt/accounts.rc \ + .netrc \ + .offlineimaprc \ + .xmonad/xmonad.hs \ + +# Files that are system independent. +# IMPORTANT: directories must have trailing slash +GLOBAL_FILES = \ + .Xdefaults \ + .config/nitrogen/ \ + .dzen/ \ + .gitconfig \ + .imapfilter/ \ + .inputrc \ + .local/share/wallpapers/ \ + .mailcheckrc \ + .mutt/ \ + .muttrc \ + .notmuch-config \ + .quiltrc-dpkg \ + .screenrc \ + .screenlayout/ \ + .signature \ + .vim/ \ + .vimrc \ + .xinitrc \ + .xmobarrc \ + .xmonad/ \ + .zsh/ \ + .zsh_logout \ + .zshrc \ + bin/ \ + +get-val = $(shell awk '{if (match($$0, /$1/)) { print $$2 } }' $(SUBSTS_FILE)) + +SHA256 = $(call get-val,SHA256) + +LOCAL_PASS = $(call get-val,LOCAL_PASS) +GMAIL_PASS = $(call get-val,GMAIL_PASS) +QUEENSU_PASS = $(call get-val,QUEENSU_PASS) +PM_EMAIL = $(call get-val,PM_EMAIL) +SCREENLAYOUT = $(call get-val,SCREENLAYOUT) +XMONAD_DZEN_W = $(call get-val,XMONAD_DZEN_W) +XMONAD_DZEN_X = $(call get-val,XMONAD_DZEN_X) +XMONAD_DZEN_Y = $(call get-val,XMONAD_DZEN_Y) + +# This target relies on GLOBAL_FILES being before LOCAL_FILES so that the +# build/LOCAL_FILES targets overwrite what was copied in GLOBAL_FILES. +BUILD = $(patsubst %,build/%,$(GLOBAL_FILES) $(LOCAL_FILES)) + +build: $(BUILD) + +build/.offlineimaprc: .offlineimaprc $(SUBSTS_FILE) + [ -d build ] || mkdir build + sed -e 's/LOCAL_PASS/$(LOCAL_PASS)/g' \ + -e 's/GMAIL_PASS/$(GMAIL_PASS)/g' \ + -e 's/QUEENSU_PASS/$(QUEENSU_PASS)/g' $< > $@ + +build/.imapfilter/config.lua: .imapfilter/config.lua $(SUBSTS_FILE) + [ -d build/.imapfilter ] || mkdir -p build/.imapfilter + sed -e 's/LOCAL_PASS/$(LOCAL_PASS)/g' \ + -e 's/PM_EMAIL/$(PM_EMAIL)/g' $< > $@ + +build/.netrc: .netrc $(SUBSTS_FILES) + [ -d build ] || mkdir build + sed -e 's/LOCAL_PASS/$(LOCAL_PASS)/g' $< > $@ + +build/.mutt/accounts.rc: .mutt/accounts.rc $(SUBSTS_FILE) + [ -d build/.mutt ] || mkdir -p build/.mutt + sed -e 's/LOCAL_PASS/$(LOCAL_PASS)/g' \ + -e 's/GMAIL_PASS/$(GMAIL_PASS)/g' \ + -e 's/QUEENSU_PASS/$(QUEENSU_PASS)/g' $< > $@ + +build/.xinitrc: .xinitrc $(SUBSTS_FILE) + [ -d build ] || mkdir build + sed -e 's/SCREENLAYOUT/$(SCREENLAYOUT)/g' $< > $@ + +build/.xmonad/xmonad.hs: .xmonad/xmonad.hs $(SUBSTS_FILE) + [ -d build/.xmonad ] || mkdir -p build/.xmonad + sed -e 's/XMONAD_DZEN_W/$(XMONAD_DZEN_W)/g' \ + -e 's/XMONAD_DZEN_X/$(XMONAD_DZEN_X)/g' \ + -e 's/XMONAD_DZEN_y/$(XMONAD_DZEN_Y)/g' $< > $@ + +build/%: % + [ -d $(dir $@) ] || mkdir -p $(dir $@) + rsync -a $< $@ + +install: $(BUILD) + rsync -a build/ ~/ + +sha256sums: $(LOCAL_FILES) $(GLOBAL_FILES) dm + $(SHA256) `git ls-files | grep -v $@` > $@ + +sha256sums.asc: sha256sums + rm -f $@ + gpg --armor --detach-sign $< + +verify: + # BSD sha256 sum command doesn't have a -c option. + # BSD and coreutils sha256 commands have different outputs, however, the + # sum is always the last field. + awk 'BEGIN {\ + mismatch_count = 0; \ + match_count = 0; \ + } { \ + file = $$2; \ + sub(/^\(/, "", file); \ + sub(/\)$$/, "", file); \ + cmd = "$(SHA256) " file; \ + cmd | getline sum; \ + close(cmd); \ + sum = split(sum, fields); \ + if (fields[sum] == $$NF) { \ + print "Match: " file; \ + match_count += 1; \ + } else { \ + print "Mismatch: " file; \ + mismatch_count += 1; \ + } \ + } END { \ + print match_count, "matches, ", mismatch_count, "mismatches." \ + }' sha256sums + gpg --verify sha256sums.asc + +clean: + rm -fr build + +.PHONY: build install clean verify |