馃悷 My personal dotfiles
1symlinks = \
2 bundle \
3 config \
4 local \
5 gemrc \
6 gitconfig \
7 gitignore \
8 tool-versions \
9 vimrc \
10
11default: | update clean
12
13install: | ln brew ruby vim_plug fisher
14
15update: | install
16 brew upgrade
17 gem update
18 fish -c "fisher update"
19 vim +PlugUpgrade +PlugInstall +PlugUpdate +qall
20
21clean: | install
22 brew cleanup
23 gem clean
24 vim +PlugClean +qall
25
26# brew
27
28brew: | $(homebrew)
29
30homebrew_root = /opt/homebrew
31homebrew = $(homebrew_root)/bin/brew
32$(homebrew):
33 @/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
34 /opt/homebrew/bin/brew bundle --file=$(PWD)/Brewfile
35
36# ln
37
38prefixed_symlinks = $(addprefix $(HOME)/.,$(symlinks))
39ln: | $(prefixed_symlinks)
40
41$(prefixed_symlinks):
42 @ln -Fsv $(PWD)/$(patsubst .%,%,$(notdir $@)) $@
43
44# ruby
45
46ruby_version := $(shell cat $(PWD)/tool-versions | awk -v tool=ruby '$$1 == tool { print $$2 }')
47
48ruby_versions = $(HOME)/.asdf/installs/ruby
49ruby = $(ruby_versions)/$(ruby_version)
50
51bundler = $(ruby)/bin/bundle
52
53ruby: | $(ruby) $(bundler)
54
55$(ruby): | $(brew) $(HOME)/.tool-versions
56 asdf plugin add ruby
57 asdf install ruby $(ruby_version)
58
59gem = $(ruby)/bin/gem
60
61$(bundler): | $(ruby)
62 $(gem) install bundler
63
64# vim
65
66vim_plug = $(HOME)/.vim/autoload/plug.vim
67vim_plug: | $(vim_plug)
68
69$(vim_plug):
70 curl -fLo $(vim_plug) --create-dirs \
71 https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
72 mkdir -p $(HOME)/.vim/tmp
73
74# fisher
75fisher = $(HOME)/.config/fish/functions/fisher.fish
76fisher: | $(fisher)
77
78$(fisher):
79 @/opt/homebrew/bin/fish -c "curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher"
80
81# make
82
83.PHONY: update