-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuninstall.sh
More file actions
executable file
·65 lines (58 loc) · 2.42 KB
/
Copy pathuninstall.sh
File metadata and controls
executable file
·65 lines (58 loc) · 2.42 KB
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
#!/bin/bash
# Uninstall Odysafe ThreatMap with one confirmation.
set -Eeuo pipefail
readonly PROJECT_NAME="odysafe-threatmap"
readonly SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
readonly VENV_DIR="${SCRIPT_DIR}/.venv"
readonly USER_BIN_DIR="${HOME}/.local/bin"
readonly DATA_DIR="${XDG_DATA_HOME:-${HOME}/.local/share}/${PROJECT_NAME}"
readonly CACHE_DIR="${XDG_CACHE_HOME:-${HOME}/.cache}/${PROJECT_NAME}"
readonly CONFIG_DIR="${XDG_CONFIG_HOME:-${HOME}/.config}/${PROJECT_NAME}"
ASSUME_YES=false
for argument in "$@"; do
case "${argument}" in
--yes|-y) ASSUME_YES=true ;;
*) printf '[ERROR] Unknown option: %s\n' "${argument}" >&2; exit 2 ;;
esac
done
remove_command() {
local path="$1" expected="$2"
if [[ -L "${path}" && "$(readlink -- "${path}")" == "${expected}" ]]; then
rm -- "${path}"
fi
}
remove_path() {
local path="$1"
[[ -e "${path}" || -L "${path}" ]] && rm -rf -- "${path}"
}
main() {
printf '\n\033[1mOdysafe ThreatMap\033[0m\n'
printf '\033[2mSafe removal\033[0m\n\n'
if [[ "${ASSUME_YES}" == false ]]; then
printf 'Remove Odysafe ThreatMap, environments, settings, data, and caches? [y/N]: '
read -r answer || exit 0
[[ "${answer}" =~ ^[Yy]([Ee][Ss])?$ ]] || { printf 'Uninstallation cancelled.\n'; exit 0; }
fi
remove_command "${USER_BIN_DIR}/odysafe" "${VENV_DIR}/bin/odysafe"
remove_command "${USER_BIN_DIR}/odysafe-threatmap" "${VENV_DIR}/bin/odysafe-threatmap"
remove_path "${VENV_DIR}"
remove_path "${SCRIPT_DIR}/venv"
remove_path "${SCRIPT_DIR}/env"
remove_path "${SCRIPT_DIR}/.env"
remove_path "${SCRIPT_DIR}/.cache"
remove_path "${SCRIPT_DIR}/.pytest_cache"
remove_path "${SCRIPT_DIR}/.ruff_cache"
remove_path "${SCRIPT_DIR}/.mypy_cache"
remove_path "${SCRIPT_DIR}/htmlcov"
remove_path "${SCRIPT_DIR}/odysafe-output"
remove_path "${SCRIPT_DIR}/.coverage"
remove_path "${SCRIPT_DIR}/coverage.xml"
remove_path "${DATA_DIR}"
remove_path "${CACHE_DIR}"
remove_path "${CONFIG_DIR}"
find "${SCRIPT_DIR}" -maxdepth 1 -type f -name '.env.*' -delete
find "${SCRIPT_DIR}/src" "${SCRIPT_DIR}/tests" -type d -name '__pycache__' -prune -exec rm -rf -- {} + 2>/dev/null || true
find "${SCRIPT_DIR}" -maxdepth 1 -type f \( -name '*.log' -o -name '.~lock.*' -o -name '~$*.xlsx' \) -delete
printf '\n\033[32m✓\033[0m Odysafe ThreatMap removed\n\n'
}
main "$@"