diff --git a/Makefile b/Makefile index 7add50f..b22ddee 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +# Variable definitions + home ?= $(HOME) dotfiles_dir ?= $(home)/10sr_dotfiles @@ -13,15 +15,12 @@ ostype = $(shell uname) shrc_loadables = sh bash zsh shrc_common_tpl = -emacs ?= emacs - -all: default +emacs ?= $(shell which emacs 2>/dev/null) +git ?= $(shell which git 2>/dev/null) -# `make check` is just an alias for `make test` -check: test +# Targets -# Similarly, check-syntax is test-syntax -check-syntax: test-syntax +all: default tests = test-el test: test-syntax $(tests) @@ -29,9 +28,17 @@ test: test-syntax $(tests) test_syntaxes = test-syntax-el test-syntax-sh test-syntax: $(test_syntaxes) -setups = setup-darwin setup-directories setup-emacs +setups = setup-darwin setup-directories setup-emacs setup-gitconf setup: $(setups) + + +# `make check` is just an alias for `make test` +check: test + +# Similarly, check-syntax is test-syntax +check-syntax: test-syntax + .PHONY: all default \ test check $(tests) \ test-syntax check-syntax $(test_syntaxes)\ @@ -40,9 +47,12 @@ setup: $(setups) + # setups # ====== + + # create directories # ------------------ @@ -52,6 +62,8 @@ setup-directory: $(setup_directories) $(localdir) $(vardir) $(bindir): mkdir -vp $@ + + # darwin # ------ @@ -82,6 +94,8 @@ setup-darwin-daemon: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist ;\ fi + + # emacs setup # ----------- @@ -90,6 +104,77 @@ setup-emacs: emacs.el +# git config setup +# ---------------- + +ifneq (,$(git)) +git_conf = $(git) config --global +endif + +xz = $(shell which xz 2>/dev/null) + +setup-gitconf: +ifeq (,$(git)) +$(warnning "Git program not found") +else + $(git_conf) user.name '10sr' + $(git_conf) user.email '8slashes+git@gmail.com' + + $(git_conf) core.autocrlf false + $(git_conf) core.excludesfile '~/.gitignore' + $(git_conf) color.ui auto + $(git_conf) status.relativePaths false + $(git_conf) status.showUntrackedFiles normal + $(git_conf) log.date iso + $(git_conf) push.default current +ifneq (,$(xz)) + $(git_conf) tar.txz.command "xz -c" +endif + $(git_conf) alias.graph "log --graph --date-order -C -M --pretty=tformat:\"%C(green)%h%C(reset) %C(white)%ad%C(reset) %C(red)%an%C(reset)%C(yellow)%d%C(reset) %C(white bold)%s%C(reset)\" --date=short -n 499" + $(git_conf) alias.st "status -s -b" + $(git_conf) alias.b "branch" + $(git_conf) alias.sb "show-branch" + $(git_conf) alias.ci "commit --verbose" + $(git_conf) alias.co "checkout" + $(git_conf) alias.cim "commit --verbose -m" + $(git_conf) alias.di "diff --color" + $(git_conf) alias.me "merge --no-ff --stat --verbose" + $(git_conf) alias.ffme "merge --ff-only --stat --verbose" + $(git_conf) alias.gr "grep -n" + $(git_conf) alias.ls "ls-files" + # $(git_conf) alias.ls "ls-files -v --full-name" + # $(git_conf) alias.ls "status -u -s ." + $(git_conf) alias.sl "!sl" + # $(git_conf) alias.my-ls "ls-files | xargs ls" + # $(git_conf) alias.ll "!git ls-files | xargs ls -l -CFG --color=auto --time-style=long-iso" + $(git_conf) alias.addi "add -i" + $(git_conf) alias.clean-p "diff --quiet" + $(git_conf) alias.echo-ref "for-each-ref --format='%(refname:short)'" + + # alias open-branch and close-branch, which will be useful for topic branch + # workflow + _git_open_branch="checkout -b" + _git_close_branch="!sh -cx 'git stash && \ +git checkout master && git merge --no-ff --stat --verbose -'" + $(git_conf) alias.open-branch "$_git_open_branch" + $(git_conf) alias.close-branch "$_git_close_branch" + $(git_conf) alias.o "$_git_open_branch" + $(git_conf) alias.c "$_git_close_branch" + + $(git_conf) alias.todo "grep -nH -E -i 'todo:|note:|fixme:'" + + $(git_conf) alias.snap '! gitdir="`git rev-parse --git-dir`" && : >>"$gitdir"/logs/refs/snapshot && cmt=`git stash create` && test -n "$cmt" && git update-ref refs/snapshot $cmt && echo Snapshot created: $cmt' + + #$(git_conf) alias.wc "!git ls-files -z | xargs -0 wc" + # $(git_conf) push.default "simple" +ifneq (,$(iswindows)) + $(git_conf) core.fileMode false +endif +endif + + + + # test # ==== @@ -105,6 +190,8 @@ $(test_els): test-el-%: % + + # test syntax # =========== @@ -117,6 +204,7 @@ $(test_syntax_shs): test-syntax-%: % sh -ec 'for sh in $(shrc_loadables); do $$sh -n $<; done' + test_syntax_els = test-syntax-emacs.el test-syntax-el: $(test_syntax_els) .PHONY: $(test_syntax_els)