-
Notifications
You must be signed in to change notification settings - Fork 0
/
uninstall.sh.in
187 lines (146 loc) · 4.63 KB
/
uninstall.sh.in
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#!/bin/sh
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
troubleshooting_url="https://skupper.io/install/troubleshooting.html"
@burly@
usage() {
local error="${1:-}"
if [ -n "${error}" ]
then
printf "%b %s\n\n" "$(red "ERROR:")" "${*}"
fi
cat <<EOF
Usage: uninstall.sh [OPTION...]
Uninstall the Skupper command-line tool
Options:
-h, --help Print this help text and exit
--scheme SCHEME Select an installation scheme (default "home")
--interactive Operate in interactive mode
--verbose Print detailed logging to the console
Schemes:
home Uninstall from ~/.local/bin
opt Uninstall from /opt/skupper/bin
EOF
if [ -n "${error}" ]
then
exit 1
fi
exit 0
}
require_option_arg() {
local opt="$1"
local optarg="$2"
if [ -z "${optarg}" ]
then
usage "Option ${opt} is missing a required argument"
fi
case "${optarg}" in
-*) usage "Option ${opt} is missing a required argument" ;;
*) : ;;
esac
}
main() {
enable_strict_mode
if [ -n "${DEBUG:-}" ]
then
enable_debug_mode
fi
local scheme=home
local interactive=
local verbose=
while [ $# -gt 0 ]
do
case "$1" in
-h|--help) usage ;;
--scheme)
require_option_arg "$1" "${2:-}"
scheme="$2"
shift
;;
--interactive) interactive=1 ;;
--verbose) verbose=1 ;;
*) usage "Unknown option: ${1}" ;;
esac
shift
done
case "${scheme}" in
home) local skupper_bin_dir="${TEST_INSTALL_PREFIX:-}${HOME}/.local/bin" ;;
opt) local skupper_bin_dir="${TEST_INSTALL_PREFIX:-}/opt/skupper/bin" ;;
*) usage "Unknown installation scheme: ${scheme}" ;;
esac
local work_dir="${TEST_INSTALL_PREFIX:-}${HOME}/.cache/skupper-install-script"
local log_file="${work_dir}/install.log"
local backup_dir="${work_dir}/backup"
mkdir -p "${work_dir}"
cd "${work_dir}"
init_logging "${log_file}" "${verbose}"
{
if [ -n "${interactive}" ]
then
print_section "Preparing to uninstall"
print "This script will uninstall the Skupper command currently at:"
print
print " ${skupper_bin_dir}/skupper"
print
print "It will save a backup of the existing installation to:"
print
print " ${backup_dir}"
print
print "Run \"uninstall.sh -h\" to see the uninstall options."
print
ask_to_proceed
print
fi
print_section "Checking prerequisites"
if [ ! -e "${skupper_bin_dir}/skupper" ]
then
fail "There is no existing installation to remove"
fi
check_writable_directories "${skupper_bin_dir}"
print_result "OK"
if [ -e "${skupper_bin_dir}/skupper" ]
then
print_section "Saving the existing installation to a backup"
if [ -e "${backup_dir}" ]
then
mv "${backup_dir}" "${backup_dir}.$(date +%Y-%m-%d).$(random_number)"
fi
run mkdir -p "${backup_dir}"
run mv "${skupper_bin_dir}/skupper" "${backup_dir}"
print_result "OK"
fi
print_section "Removing the existing installation"
if [ -e "${skupper_bin_dir}/skupper" ]
then
rm "${skupper_bin_dir}/skupper"
fi
print_result "OK"
print_section "Summary"
print_result "SUCCESS"
print "The Skupper command has been uninstalled."
print
print " Backup: ${backup_dir}"
print
print "To install Skupper again, use:"
print
print " curl https://skupper.io/install.sh | sh"
print
} >&6 2>&6
}
main "$@"