-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
87 lines (82 loc) · 2.92 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
#
# Makefile bash-lastdir
# (c) 2017 Jean-Michel PARIS
#
# Variables
ECHO_CMD = $(shell which echo)
TEST_CMD = $(shell which test)
CAT_CMD = $(shell which cat)
CP_CMD = $(shell which cp)
MV_CMD = $(shell which mv)
RM_CMD = $(shell which rm)
AWK_CMD = $(shell which awk)
DIFF_CMD = $(shell which diff)
BASH_LOGOUT = .bash_logout
BASH_PROFILE= .bash_profile
help:
@$(ECHO_CMD) ""
@$(ECHO_CMD) "Targets available"
@$(ECHO_CMD) ""
@$(ECHO_CMD) "make help This help."
@$(ECHO_CMD) ""
@$(ECHO_CMD) "make install Install the lastdir functionnality in your Bash environment."
@$(ECHO_CMD) "make uninstall Remove the lastdir functionnality from your Bash configuration files"
@$(ECHO_CMD) ""
install:
@$(ECHO_CMD) ""
@if $(TEST_CMD) -f ~/$(BASH_LOGOUT) ; \
then \
# search lastdir functionnality ; \
grep --quiet "BEGIN lastdir" ~/$(BASH_LOGOUT) ; \
if $(TEST_CMD) $$? -eq 0 ; \
then \
# lastdir already installed \
$(ECHO_CMD) "lastdir is already installed in $(BASH_LOGOUT)!" ; \
else \
# append lastdir to .bash_logout \
$(ECHO_CMD) "lastdir added to $(BASH_LOGOUT)" ; \
$(CAT_CMD) ./$(BASH_LOGOUT).append >> ~/$(BASH_LOGOUT) ; \
fi ; \
else \
# copy a new .bash_logout \
$(ECHO_CMD) "$(BASH_LOGOUT) copy" ; \
$(CP_CMD) ./$(BASH_LOGOUT).append ~/$(BASH_LOGOUT) ; \
fi ;
@if $(TEST_CMD) -f ~/$(BASH_PROFILE) ; \
then \
# search lastdir functionnality \
grep --quiet "BEGIN lastdir" ~/$(BASH_PROFILE) ; \
if $(TEST_CMD) $$? -eq 0 ; \
then \
# lastdir already installed \
$(ECHO_CMD) "lastdir is already installed in $(BASH_PROFILE)!" ; \
else \
# append lastdir to .bash_profile \
$(ECHO_CMD) "lastdir added to $(BASH_PROFILE)" ; \
$(CAT_CMD) ./$(BASH_PROFILE).append >> ~/$(BASH_PROFILE) ; \
fi ; \
else \
# copy a new .bash_profile \
$(ECHO_CMD) "$(BASH_PROFILE) copy" ; \
$(CP_CMD) ./$(BASH_PROFILE).append ~/$(BASH_PROFILE) ; \
fi ;
uninstall:
@$(ECHO_CMD) ""
@$(AWK_CMD) 'BEGIN{found=0; lastdir=0;} /BEGIN lastdir/{found=1; lastdir=1;} {if(!found) print} /END lastdir/{found=0;} END{ exit !lastdir; }' ~/$(BASH_PROFILE) > ~/$(BASH_PROFILE).filtered ; \
if $(TEST_CMD) $$? -eq 1 ; \
then \
$(RM_CMD) -f ~/$(BASH_PROFILE).filtered ; \
$(ECHO_CMD) "lastdir is not installed in $(BASH_PROFILE)" ; \
else \
$(MV_CMD) ~/$(BASH_PROFILE).filtered ~/$(BASH_PROFILE) ; \
$(ECHO_CMD) "lastdir removed from $(BASH_PROFILE)" ; \
fi ;
@$(AWK_CMD) 'BEGIN{found=0; lastdir=0;} /BEGIN lastdir/{found=1; lastdir=1;} {if(!found) print} /END lastdir/{found=0;} END{ exit !lastdir; }' ~/$(BASH_LOGOUT) > ~/$(BASH_LOGOUT).filtered ; \
if $(TEST_CMD) $$? -eq 1 ; \
then \
$(RM_CMD) -f ~/$(BASH_LOGOUT).filtered ; \
$(ECHO_CMD) "lastdir is not installed in $(BASH_LOGOUT)" ; \
else \
$(MV_CMD) ~/$(BASH_LOGOUT).filtered ~/$(BASH_LOGOUT) ; \
$(ECHO_CMD) "lastdir removed from $(BASH_LOGOUT)" ; \
fi ;