blob: 89a4bdcb7ce86ac0831eea5f7e755f4dd946c817 (
plain) (
tree)
|
|
INTO := $(HOME)
all : build
ifneq ($(USER),root)
include Makefile.$(shell hostname | cut -d. -f1)
endif
INSTALL := \
$(INSTALL) \
.abook/abookrc \
.bash_profile \
.bashrc \
.config/git/config \
.config/git/ignore \
.config/mpd/mpd.conf \
.config/ncmpcpp/bindings \
.config/sh/aliases \
.config/sh/cdhist.sh \
.config/sh/env \
.config/sh/functions \
.config/sh/fzf \
.config/tex/jesse_essay.sty \
.config/tex/jesse_letter.sty \
.config/tex/jesse_macros.sty \
.config/tex/jesse_resume.sty \
.config/tex/jesse.sty \
.config/tex/sarah_resume.sty \
.config/tig/config \
.config/zsh/local-completions \
.config/zsh/zsh-autosuggestions \
.config/zsh/zsh-completions \
.config/zsh/zsh-syntax-highlighting \
.crawlrc \
.gdbinit \
.inputrc \
.less \
.local/share/fortune \
.mutt/choose-muttrc-type \
.mutt/imap \
.mutt/mailcap \
.mutt/muttrc \
.mutt/local \
.nethackrc \
.profile \
.replyrc \
.screenrc \
.ssh/cao_key \
.tmux.conf \
.vimrc \
.zshcomplete \
.zshinput \
.zshrc \
.bin \
.vim \
EMPTYDIRS := \
$(EMPTYDIRS) \
.cache/mutt/headers \
.cache/mutt/bodies \
.cache/vim/hist \
.cache/vim/undo \
INSTALL_CUSTOM := \
$(INSTALL_CUSTOM)
BUILD := \
$(BUILD) \
$(addsuffix .dat,$(filter-out %.dat,$(wildcard local/share/fortune/*))) \
$(addsuffix tags,$(wildcard vim/pack/*/start/*/doc/)) \
vim/spell/en.utf-8.add.spl \
less
INSTALLED_SYMLINKS := \
$(patsubst %,$(INTO)/%,$(INSTALL)) \
$(INSTALL_CUSTOM)
INSTALLED_DIRS := \
$(patsubst %,$(INTO)/%,$(EMPTYDIRS))
INSTALLED := \
$(INSTALLED_SYMLINKS) \
$(INSTALLED_DIRS)
ECHO = @echo
LN = @ln -sf
MKDIR = @mkdir -p
RM = @rm -f
RMDIR = @rmdir -p --ignore-fail-on-non-empty
# force shell instead of exec to work around
# https://savannah.gnu.org/bugs/?57962 since i have ~/.bin/git as a directory
GIT = @:; git
# named targets
build : submodules $(BUILD)
submodules :
$(GIT) submodule update --init --recursive
install :: all $(INSTALLED)
@chmod 600 ssh/cao_key
$(ECHO) Installed into $(INTO)
clean ::
$(ECHO) Cleaning from $(INTO)
$(RM) $(BUILD)
$(RM) $(INSTALLED_SYMLINKS)
$(RMDIR) $(INSTALLED_DIRS)
update :
$(GIT) submodule foreach '(if [ $$path == "vim/pack/filetype/start/perl" ]; then git checkout dev; else git checkout master; fi) && git pull'
versions :
$(GIT) submodule foreach -q 'printf "%-53s" " $$path" && GIT_PAGER=cat git show -s --format=format:%cI%n $$sha1'
updates :
$(GIT) submodule foreach -q 'if [ $$path == "vim/pack/filetype/start/perl" ]; then if [ $$(git rev-parse dev) != $$sha1 ]; then git lg dev...$$sha1; fi; else if [ $$(git rev-parse master) != $$sha1 ]; then git lg master...$$sha1; fi; fi'
shfmt :
rg --files-without-match shfmt:skip $$(rg --files-with-matches '[#]!.*sh\b|[v]im:.*ft=.*sh\b') | grep -v "$$(echo $$(git submodule foreach -q 'echo $$sm_path') | sed 's/ /\\|/g')" | xargs shfmt -w -i 4
.PHONY: submodules build install clean update versions updates shfmt
# installation targets
$(patsubst %,$(INTO)/%,$(EMPTYDIRS)) :
$(MKDIR) $@
$(patsubst %,$(INTO)/%,$(INSTALL)) : $(INTO)/.% : %
@[ ! -e $@ ] || [ -h $@ ] || mv -f $@ $@.bak
$(MKDIR) $(dir $@)
$(LN) $(PWD)/$< $@
# build targets
local/share/fortune/%.dat : local/share/fortune/%
$(ECHO) "Compiling $@"
@strfile -s $(basename $@)
%/doc/tags: %/doc
@vim -u NONE -c':helptags $< | :q'
%.spl : %
@vim -u NONE -c':mkspell! $< | :q'
less : lesskey
lesskey -o $@ $<
|