-
Notifications
You must be signed in to change notification settings - Fork 11
/
clean-app.sh
executable file
·83 lines (73 loc) · 2.36 KB
/
clean-app.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
#!/bin/bash
delete_data() {
bundle_id="$1"
printf '%s' "Deleting data for ${bundle_id}..."
if defaults read "${bundle_id}" &>/dev/null; then
defaults delete "${bundle_id}"
fi
data_path="${HOME}/Library/Containers/${bundle_id}/Data"
if [ -d "${data_path}" ]; then
rm -r "${data_path}" || { echo "Failed to delete ${data_path}"; exit 1; }
echo " Done."
else
printf '\nNothing to do for %s\n' "${data_path}"
fi
}
bundle_id=
config_id=
case "$1" in
debug)
bundle_id="com.duckduckgo.macos.browser.debug"
config_ids="*com.duckduckgo.macos.browser.app-configuration.debug"
netp_bundle_ids_glob="*com.duckduckgo.macos.browser.network-protection*debug"
;;
review)
bundle_id="com.duckduckgo.macos.browser.review"
config_ids="*com.duckduckgo.macos.browser.app-configuration.review"
netp_bundle_ids_glob="*com.duckduckgo.macos.browser.network-protection*review"
;;
debug-appstore)
bundle_id="com.duckduckgo.mobile.ios.debug"
config_ids="*com.duckduckgo.mobile.ios.app-configuration.debug"
;;
review-appstore)
bundle_id="com.duckduckgo.mobile.ios.review"
config_ids="*com.duckduckgo.mobile.ios.app-configuration.review"
;;
*)
echo "usage: clean-app debug|review|debug-appstore|review-appstore"
exit 1
;;
esac
delete_data "${bundle_id}"
# shellcheck disable=SC2046
read -r -a config_bundle_ids <<< $(
find "${HOME}/Library/Group Containers/" \
-type d \
-maxdepth 1 \
-name "${config_ids}" \
-exec basename {} \;
)
for config_id in "${config_bundle_ids[@]}"; do
path="${HOME}/Library/Group Containers/${config_id}"
printf '%s' "Deleting data at ${path}... "
if [ -d "${path}" ]; then
rm -r "${path}" || { echo "Failed to delete ${path}"; exit 1; }
echo "Done."
else
printf '\nNothing to do for %s\n' "${path}"
fi
done
if [[ -n "${netp_bundle_ids_glob}" ]]; then
# shellcheck disable=SC2046
read -r -a netp_bundle_ids <<< $(
find "${HOME}/Library/Containers/" \
-type d \
-maxdepth 1 \
-name "${netp_bundle_ids_glob}" \
-exec basename {} \;
)
for netp_bundle_id in "${netp_bundle_ids[@]}"; do
delete_data "${netp_bundle_id}"
done
fi