-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
153 lines (122 loc) · 3.76 KB
/
makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
SHELLENV := .zshrc .zshenv .tmux.conf
SHELLTOOLS := tig bat neomutt
EMACS := .emacs.d
SWAYENV := mako sway waybar swaylock gtk-3.0
PAMENV := .pam_environment
NVIM := nvim
TERMINALS := wezterm termite alacritty
MISC := mpv
CFG_TARGET := $(shell \
if [ ! -z ${XDG_CONFIG} ]; \
then printf ${XDG_CONFIG}'\n'; \
else printf ${HOME}/.config'\n'; \
fi)
BACKUP_TARGET = ${HOME}/dotfiles_backup
CHK_TARGET := $(PWD)/bin/make_chkfile.sh
.PHONY: install
install:
@echo 'execute "make link-all" or "make link-core" instead install'
link-all: \
check-env \
link-neovim \
link-swayenv \
link-emacs \
link-shellenv \
link-shelltools \
link-terminals \
link-misc
link-all-core: \
check-env \
link-neovim \
link-emacs \
link-shellenv \
link-shelltools
check-env:
@printf 'Current config target directory:\n\t$(CFG_TARGET)\n'
@if [ ! -e $(CFG_TARGET) ]; then \
printf '\t target unavailable generating...\n'; \
mkdir -p $(CFG_TARGET); \
fi # should read from user
check: check-env \
check-vim \
check-neovim \
check-swayenv \
check-emacs \
check-shellenv \
check-shelltools \
check-terminals \
check-misc
#backup-all: # backup
# vim config ------------------------------------------------------------------
check-vim:
@printf '+ vim:\n'
@$(CHK_TARGET) "${HOME}/.vimrc"
@$(CHK_TARGET) "${HOME}/.vim"
link-vim:
@ln -sv "${PWD}/config/${NVIM}/init.vim" "${HOME}/.vimrc"
@ln -nsv "${PWD}/config/${NVIM}" "${HOME}/.vim"
# neovim config ----------------------------------------------------------------
check-neovim:
@printf '+ neovim:\n'
@for cfgfile in $(NVIM); \
do $(CHK_TARGET) "$(CFG_TARGET)/$${cfgfile}"; \
done
link-neovim: $(addprefix $(CFG_TARGET)/,$(NVIM))
@# launch nvim backgound and setup nvim -es -v init.vim?
# swayenv config ---------------------------------------------------------------
check-swayenv: check-pamenv
@printf '+ swayenv:\n'
@for cfgfile in $(SWAYENV); \
do $(CHK_TARGET) "$(CFG_TARGET)/$${cfgfile}"; \
done
link-swayenv: link-pamenv $(addprefix $(CFG_TARGET)/,$(SWAYENV))
check-pamenv:
@printf '+ pamenv:\n'
@for cfgfile in $(PAMENV); \
do $(CHK_TARGET) "$(HOME)/$${cfgfile}"; \
done
link-pamenv: $(addprefix $(HOME)/,$(PAMENV))
# emacs config ----------------------------------------------------------------
check-emacs:
@printf '+ emacs:\n'
@for cfgfile in $(EMACS); \
do $(CHK_TARGET) "$(HOME)/$${cfgfile}"; \
done
link-emacs: $(addprefix $(HOME)/,$(EMACS))
# shellenv config --------------------------------------------------------------
check-shellenv:
@printf '+ shellenv:\n'
@for cfgfile in $(SHELLENV); \
do $(CHK_TARGET) "$(HOME)/$${cfgfile}"; \
done
link-shellenv: $(addprefix $(HOME)/,$(SHELLENV))
# shelltools config ------------------------------------------------------------
check-shelltools:
@printf '+ shelltools:\n'
@for cfgfile in $(SHELLTOOLS); \
do $(CHK_TARGET) "$(CFG_TARGET)/$${cfgfile}"; \
done
link-shelltools: $(addprefix $(CFG_TARGET)/,$(SHELLTOOLS))
# terminals config -------------------------------------------------------------
check-terminals:
@printf '+ terminals:\n'
@for cfgfile in $(TERMINALS); \
do $(CHK_TARGET) "$(CFG_TARGET)/$${cfgfile}"; \
done
link-terminals: $(addprefix $(CFG_TARGET)/,$(TERMINALS))
# misc config -----------------------------------------------------------------
check-misc:
@printf '+ misc:\n'
@for cfgfile in $(MISC); \
do $(CHK_TARGET) "$(CFG_TARGET)/$${cfgfile}"; \
done
link-misc: $(addprefix $(CFG_TARGET)/,$(MISC))
# rules ----------------------------------------------------------------------
# link to CFG_TARGET
$(CFG_TARGET)/%:
@ln -nsv $(PWD)/config/$(@F) $@
$(BACKUP_TARGET)/%: %
@echo "backup"
# link to HOME
$(HOME)/%:
@ln -nsv $(PWD)/$(@F) $@