| @@ -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) | |||