1
1
#! /usr/bin/env bash
2
+ # Unofficial Bash Strict Mode
3
+ set -euo pipefail
4
+ IFS=$' \n\t '
2
5
3
6
function abspath {
4
7
if [[ -d " $1 " ]]; then
@@ -17,31 +20,35 @@ function abspath {
17
20
18
21
function root_check {
19
22
if [[ $EUID -ne 0 ]]; then
20
- >&2 echo " Please run script with 'sudo $( basename $0 ) $@ ', exiting..."
23
+ >&2 echo " Please run script with 'sudo $( basename " $0 " ) $* ', exiting..."
21
24
exit 1
22
25
fi
23
26
}
24
27
25
28
function os_check {
26
29
VERSION=$( sw_vers | grep " ProductVersion" | sed -E ' s/[^.0-9]+//g' )
27
- # From "10.11.12" get "11"
28
- MAJOR=${VERSION: 3: 2}
30
+ # From "10.11.12" (sw_vers) get "11"
31
+ # From "12.0.1" (sw_vers) get "12"
32
+ MAJOR=$( echo " $VERSION " | awk -F . ' { if ($1 >= 11) print $1; else print $2; }' )
29
33
MIN_MAJOR_VER=10
30
34
MIN_OS_NAME=Yosemite
31
35
if [[ $MAJOR -lt $MIN_MAJOR_VER ]]; then
32
36
>&2 echo " osagitfilter needs at least macOS 10.$MIN_MAJOR_VER ($MIN_OS_NAME ) but you have macOS ${VERSION} , exiting..."
33
37
exit 1
34
38
elif [[ -n $1 ]]; then
35
- echo " osagitfilter needs at least macOS 10.$MIN_MAJOR_VER ($MIN_OS_NAME ) but you have macOS ${VERSION} , so that's OK..."
39
+ if [[ $VERBOSE == 1 ]]; then
40
+ echo " osagitfilter needs at least macOS 10.$MIN_MAJOR_VER .* ($MIN_OS_NAME ) but you have macOS ${VERSION} , so that's OK..."
41
+ fi
36
42
fi
37
43
}
38
44
39
45
SCRIPT_NAME=$0
40
- BASE_DIR=$( dirname $( abspath $0 ) )
46
+ BASE_DIR=$( dirname " $( abspath " $0 " ) " )
41
47
INSTALL_INTO=/usr/local/bin
42
- COMMANDS=' osagetlang osagitfilter '
48
+ COMMANDS=$ ' osagetlang\t osagitfilter '
43
49
LOG_PATH=~ /Library/Logs/Catsdeep/
44
50
VERBOSE=0
51
+ GIT_OPTION=" "
45
52
C=unknown
46
53
47
54
while [[ $# -gt 0 ]]; do
@@ -65,9 +72,9 @@ if [[ $C = configure ]]; then
65
72
fi
66
73
for CMD in $COMMANDS ; do
67
74
if [[ -f $INSTALL_INTO /$CMD ]]; then
68
- echo " - ERROR : the command '$CMD ' is already exists in '$INSTALL_INTO '. No install ."
75
+ echo " - WARNING : the command '$CMD ' is already exists in '$INSTALL_INTO '."
69
76
else
70
- if ln -s $BASE_DIR /$CMD .sh $INSTALL_INTO /$CMD ; then
77
+ if ln -s " $BASE_DIR /$CMD .sh" " $INSTALL_INTO /$CMD " ; then
71
78
echo " - '$CMD ' installed"
72
79
else
73
80
echo " - ERROR: couldn't create symbolic link ($? )"
@@ -94,20 +101,20 @@ if [[ $C = configure ]]; then
94
101
elif [[ $C = reset ]]; then
95
102
for CMD in $COMMANDS ; do
96
103
if [[ -h $INSTALL_INTO /$CMD ]]; then
97
- if rm -f $INSTALL_INTO /$CMD ; then
104
+ if rm -f " $INSTALL_INTO /$CMD " ; then
98
105
echo " - '$CMD ' reset"
99
106
else
100
107
echo " - ERROR: couldn't remove '$CMD ' ($? )"
101
108
fi
102
109
else
103
- echo " - ERROR : the command '$CMD ' is not installed in '$INSTALL_INTO ' as symbolic link."
110
+ echo " - WARNING : the command '$CMD ' is not installed in '$INSTALL_INTO ' as symbolic link."
104
111
fi
105
112
done
106
113
if [[ $( which git) ]]; then
107
114
echo " Removing git configuration"
108
- git config --global --remove-section filter.osa
115
+ git config --global --remove-section filter.osa || echo " - WARNING: git exitted with code $? "
109
116
else
110
- echo " git is not found; filter is not removed."
117
+ echo " WARNING: git is not found; filter is not removed."
111
118
fi
112
119
elif [[ $C = rotate ]]; then
113
120
LOG_NAME=osagitfilter
@@ -116,22 +123,22 @@ elif [[ $C = rotate ]]; then
116
123
echo " Rotating log (if any) in $LOG_PATH :"
117
124
if [[ -f $LOG_PATH /$LOG_NAME .log ]]; then
118
125
echo " - renaming $LOG_NAME .log -> ${ROTATE_STAMP} _$LOG_NAME .log"
119
- mv $LOG_PATH /$LOG_NAME .log $LOG_PATH /${ROTATE_STAMP} _$LOG_NAME .log
126
+ mv $LOG_PATH /$LOG_NAME .log " $LOG_PATH /${ROTATE_STAMP} _$LOG_NAME .log"
120
127
fi
121
128
else
122
129
echo " Creating log directory, nothing to rotate"
123
130
mkdir -p $LOG_PATH
124
131
fi
125
132
touch $LOG_PATH /$LOG_NAME .log
126
133
elif [[ $C = create_local_bin ]]; then
127
- root_check
134
+ root_check " $@ "
128
135
if [[ ! -d $INSTALL_INTO ]]; then
129
136
echo " Creating $INSTALL_INTO "
130
137
mkdir $INSTALL_INTO
131
138
fi
132
- if [[ $( stat -f ' %u' $INSTALL_INTO ) != $( id -u ${SUDO_USER} ) ]]; then
139
+ if [[ $( stat -f ' %u' $INSTALL_INTO ) != $( id -u " ${SUDO_USER} " ) ]]; then
133
140
echo " Change ownership to ${SUDO_USER} :admin"
134
- chown -R ${SUDO_USER} :admin $INSTALL_INTO
141
+ chown -R " ${SUDO_USER} :admin" $INSTALL_INTO
135
142
fi
136
143
if [[ " :$PATH :" == * " :$INSTALL_INTO :" * ]]; then
137
144
echo " The folder $INSTALL_INTO is created successfully."
0 commit comments