#!/usr/bin/make -f ifeq ($(XDG_CACHE_HOME),) default: all; @: %: . ~/.profile && $(MAKE) '$@' else SHELL = /bin/bash -o pipefail GIT_DIR = ${HOME}/.git targets = \ ${GIT_DIR}/info/exclude \ ${XDG_CACHE_HOME}/config-symlinks/cookie \ $(if $(shell crontab -l),${XDG_CACHE_HOME}/cron/cookie) \ $(if $(wildcard ${HOME}/Maildir),${HOME}/.folders) \ $(if $(wildcard ${XDG_CONFIG_HOME}/dconf/user),${XDG_CONFIG_HOME}/dconf/user.txt) all: $(targets) clean: rm -f -- $(targets) .PHONY: all clean ${HOME}/.folders: ${HOME}/Maildir $(MAKEFILE_LIST) find -L $< -mindepth 2 -maxdepth 2 \( -type f -name "maildirfolder" -o -type d -name new -o -type d -name tmp -o -type d -name cur \) -printf '%P\0' | xargs -r0 dirname -z -- | sort -zu | xargs -0 printf -- '.%s\n' | grep -vP '^\.FOLDERS.Ham.20(?!15)' > '$@' ${GIT_DIR}/info/exclude: ${HOME}/.git.info.exclude.in $(shell echo .??*/) ( cat $<; find $^ -type f -name 'CACHEDIR.TAG' -printf '%h\n'|sed 's@^\./@/@' ) > $@ ${XDG_CONFIG_HOME}/dconf/user.txt: ${XDG_CONFIG_HOME}/dconf/user dconf dump / > $@ ${XDG_CACHE_HOME}/cron/cookie: ${XDG_CONFIG_HOME}/cron -(cat $^/*; echo) | crontab - 2>/dev/null mkdir -p '$(@D)' date > '$@' ${XDG_CACHE_HOME}/config-symlinks/cookie: ${XDG_CONFIG_HOME}/symlinks config-symlinks mkdir -p '$(@D)' date > '$@' ${HOME}/Maildir/%: | ${HOME}/Maildir mkdir -p '$@'/{cur,new,tmp} touch '$@'/maildirfolder .DELETE_ON_ERROR: .SECONDARY: endif