-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathinstall.sh
executable file
·170 lines (152 loc) · 4.54 KB
/
install.sh
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/usr/bin/env bash
# Copyright (c) 2016-present Sven Greb <[email protected]>
# This source code is licensed under the MIT license found in the license file.
# nounset: Treat unset variables and parameters as an error when performing parameter expansion
# errexit: Exit immediately if any command exits with a non-zero status
set -o nounset -o errexit
_ct_error="\e[0;31m"
_ct_success="\e[0;32m"
_ct_warning="\e[0;33m"
_ct_highlight="\e[0;34m"
_ct_primary="\e[0;36m"
_ct="\e[0;37m"
_ctb_subtle="\e[1;30m"
_ctb_error="\e[1;31m"
_ctb_success="\e[1;32m"
_ctb_warning="\e[1;33m"
_ctb_highlight="\e[1;34m"
_ctb_primary="\e[1;36m"
_ctb="\e[1;37m"
_c_reset="\e[0m"
__help() {
printf "${_ctb}Usage: ${_ct_primary}install.sh ${_ctb_subtle}[OPTIONS]\n"
printf " ${_ctb_highlight}-h${_ct},${_ctb_highlight} --help ${_ct}Help\n"
printf " ${_ctb_highlight}-v${_ct},${_ctb_highlight} --verbose ${_ct}Verbose output\n${_c_reset}"
printf " ${_ctb_highlight}-g${_ct},${_ctb_highlight} --global \
${_ct}Install global\n${_c_reset}"
printf " ${_ctb_highlight}-c${_ct},${_ctb_highlight} --configfile <COLOR_CONFIG_FILE> \
${_ct}Use the specified color config file\n${_c_reset}"
}
__cleanup() {
trap '' SIGINT SIGTERM
unset -v _ct_error _ct_success _ct_warning _ct_highlight _ct_primary _ct
unset -v _ctb_error _ctb_success _ctb_warning _ctb_highlight _ctb_primary _ctb _c_reset
unset -v NORD_TERMITE_SCRIPT_OPTS COLOR_CONFIG_FILE VERBOSE GLOBAL_INSTALL LOCAL_INSTALL NORD_TERMITE_VERSION
unset -f __help __cleanup __log_error __log_success __log_warning __log_info
unset -f __validate_file __local_install __global_install
}
__log_error() {
printf "${_ctb_error}[ERROR] ${_ct}$1${_c_reset}\n"
}
__log_success() {
printf "${_ctb_success}[OK] ${_ct}$1${_c_reset}\n"
}
__log_warning() {
printf "${_ctb_warning}[WARN] ${_ct}$1${_c_reset}\n"
}
__log_info() {
printf "${_ctb}[INFO] ${_ct}$1${_c_reset}\n"
}
__summary_success() {
if [ $GLOBAL_INSTALL = true ]; then
__log_success "Global installation completed"
else
__log_success "Local installation completed"
fi
__cleanup
exit 0
}
__summary_error() {
__log_error "An error occurred during the installation!"
__log_error "Exit code: $1"
__cleanup
exit 1
}
__global_install() {
__validate_file
if [ ! -d $GLOBAL_INSTALL_DIR ]; then
sudo mkdir -p $GLOBAL_INSTALL_DIR
if [ $? -eq 0 ]; then
if [ $VERBOSE = true ]; then __log_info "Created global directory $GLOBAL_INSTALL_DIR"; fi
else
__log_error "Could not create global directory $GLOBAL_INSTALL_DIR"
__summary_error 1
fi
fi
sudo cp -f $COLOR_CONFIG_FILE $GLOBAL_INSTALL_DIR/termite.cfg
if [ $? -eq 0 ]; then
if [ $VERBOSE = true ]; then __log_success "Copied color config file to $GLOBAL_INSTALL_DIR"; fi
__summary_success
else
__log_error "Could not copy color config file to $GLOBAL_INSTALL_DIR"
__summary_error 1
fi
}
__local_install() {
__validate_file
if [ ! -d $LOCAL_INSTALL_DIR ]; then
mkdir -p $LOCAL_INSTALL_DIR
if [ $? -eq 0 ]; then
if [ $VERBOSE = true ]; then __log_info "Created local directory $LOCAL_INSTALL_DIR"; fi
else
__log_error "Could not create local directory $LOCAL_INSTALL_DIR"
__summary_error 1
fi
fi
cp -f $COLOR_CONFIG_FILE $LOCAL_INSTALL_DIR
if [ $? -eq 0 ]; then
if [ $VERBOSE = true ]; then __log_success "Copied color config file to $LOCAL_INSTALL_DIR"; fi
__summary_success
else
__log_error "Could not copy color config file to $LOCAL_INSTALL_DIR"
__summary_error 1
fi
}
__validate_file() {
if [ ! -f $COLOR_CONFIG_FILE ]; then
__log_error "Color config file not found: $COLOR_CONFIG_FILE"
__summary_error 1
fi
}
trap "printf '${_ctb_error}User aborted.${_c_reset}\n' && exit 1" SIGINT SIGTERM
NORD_TERMITE_SCRIPT_OPTS=$(getopt -o vghc: --long verbose,global,help,configfile: -n 'install.sh' -- "$@")
COLOR_CONFIG_FILE=src/config
VERBOSE=false
GLOBAL_INSTALL=false
LOCAL_INSTALL_DIR=~/.config/termite
GLOBAL_INSTALL_DIR=/etc/xdg
NORD_TERMITE_VERSION=0.2.0
eval set -- "$NORD_TERMITE_SCRIPT_OPTS"
while true; do
case "$1" in
-v | --verbose)
VERBOSE=true
shift
;;
-g | --global)
GLOBAL_INSTALL=true
shift
;;
-h | --help)
__help
exit 0
break
;;
-c | --configfile)
COLOR_CONFIG_FILE="$2"
shift 2
;;
--)
shift
break
;;
*) break ;;
esac
done
if [ $GLOBAL_INSTALL = true ]; then
__global_install
else
__local_install
fi
__cleanup
exit 0