mikes-macos-developer-disk-cleanup 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- package/mikes-macos-disk-cleanup.sh +31 -3
- package/modules/android-avd.sh +2 -2
- package/modules/android-sdk.sh +14 -7
- package/modules/cocoapods.sh +32 -0
- package/modules/hints.sh +9 -0
- package/modules/node-modules.sh +5 -0
- package/modules/ruby-gems.sh +4 -0
- package/modules/xcode-artifacts.sh +3 -3
- package/package.json +1 -1
@@ -26,6 +26,7 @@
|
|
26
26
|
# - Android SDK packages
|
27
27
|
# - Android AVDs
|
28
28
|
# - Homebrew caches
|
29
|
+
# - CocoaPods
|
29
30
|
|
30
31
|
# ==== CONFIGURATION DEFAULTS - change as needed ====
|
31
32
|
CONFIGFILE="${HOME}/.config/mikes-macos-disk-cleanup.env" # you'll be prompted to create this if it doesn't exist
|
@@ -68,9 +69,16 @@ if [ ${INITIALISED:-0} -ne 1 ]; then
|
|
68
69
|
fi
|
69
70
|
printf "DEVELOPMENT_BASE_DIR=${DEVELOPMENT_BASE_DIR}\n" >${CONFIGFILE}
|
70
71
|
echo "Configuration saved to ${CONFIGFILE}"
|
72
|
+
echo "NOTE: subsequent invocations will immediately commence deleting files!"
|
71
73
|
else
|
72
74
|
echo "Not saving configuration..."
|
73
75
|
fi
|
76
|
+
|
77
|
+
read -p "Deleting is about to start! Proceed? [y/n]" SHOULD_PROCEED
|
78
|
+
if [ "${SHOULD_PROCEED}" != "y" ]; then
|
79
|
+
echo "Exiting..."
|
80
|
+
exit 1
|
81
|
+
fi
|
74
82
|
fi
|
75
83
|
|
76
84
|
echo "Using development base directory: ${DEVELOPMENT_BASE_DIR}"
|
@@ -120,6 +128,13 @@ INITIALSPACE=$(
|
|
120
128
|
)
|
121
129
|
echo "DISK USAGE BEFORE CLEANUP: ${INITIALSPACE}"
|
122
130
|
|
131
|
+
# addHint function
|
132
|
+
source "${DIR}/modules/hints.sh"
|
133
|
+
|
134
|
+
# CocoaPods
|
135
|
+
source "${DIR}/modules/cocoapods.sh"
|
136
|
+
cocoapods
|
137
|
+
|
123
138
|
# remove everything in ~/Library/Caches
|
124
139
|
source "${DIR}/modules/library-caches.sh"
|
125
140
|
libraryCaches
|
@@ -170,7 +185,20 @@ androidBuildFolders
|
|
170
185
|
|
171
186
|
# Android SDKs
|
172
187
|
source "${DIR}/modules/android-sdk.sh"
|
188
|
+
set +e ; # don't exit on error
|
173
189
|
androidSDK
|
190
|
+
RETCODE=$?
|
191
|
+
set -e; # exit on error
|
192
|
+
|
193
|
+
if [ ${RETCODE} -ne 0 ]; then
|
194
|
+
if [ ${RETCODE} -eq 100 ]; then
|
195
|
+
echo "Android SDK packages already only have one version installed. Proceeding."
|
196
|
+
else
|
197
|
+
echo "!!! Failed to clean up Android SDKs !!!"
|
198
|
+
echo " check the output above for more info"
|
199
|
+
exit ${RETCODE}
|
200
|
+
fi
|
201
|
+
fi
|
174
202
|
|
175
203
|
# Android AVDs
|
176
204
|
source "${DIR}/modules/android-avd.sh"
|
@@ -190,8 +218,8 @@ FINALSPACE=$(
|
|
190
218
|
}'
|
191
219
|
)
|
192
220
|
|
193
|
-
echo "
|
221
|
+
echo "============================== FINISHED! ================================="
|
194
222
|
|
195
|
-
echo "
|
196
|
-
echo "
|
223
|
+
echo "BEFORE CLEANUP: ${INITIALSPACE}"
|
224
|
+
echo "NOW: ${FINALSPACE}"
|
197
225
|
echo "${HINTS_UPON_FINISH}"
|
package/modules/android-avd.sh
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
androidAVD() {
|
2
2
|
# Android Virtual Device Cleanup
|
3
|
-
command -v avdmanager >/dev/null 2>&1 && {
|
3
|
+
command -v ${ANDROID_HOME}/tools/bin/avdmanager >/dev/null 2>&1 && {
|
4
4
|
# get the full path from one of the AVDs
|
5
5
|
local FIRST_AVD_PATH=$(avdmanager list avd | grep "Path:" | head -1 | tr -s " "| cut -f3 -d" ")
|
6
6
|
|
@@ -21,7 +21,7 @@ androidAVD() {
|
|
21
21
|
local AVDFOLDERSIZEAFTER=$(du -hs "${FIRST_AVD_PARENTPATH}" | cut -f1)
|
22
22
|
echo " AVD folder size before: ${AVDFOLDERSIZEBEFORE}; after: ${AVDFOLDERSIZEAFTER}"
|
23
23
|
} || {
|
24
|
-
echo "'avdmanager' command not found"
|
24
|
+
echo "'${ANDROID_HOME}/tools/bin/avdmanager' command not found"
|
25
25
|
return 1
|
26
26
|
}
|
27
27
|
}
|
package/modules/android-sdk.sh
CHANGED
@@ -2,23 +2,29 @@ androidSDK() {
|
|
2
2
|
local THISMODULEDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
3
3
|
|
4
4
|
# Android SDK Manager Cleanup
|
5
|
-
command -v sdkmanager >/dev/null 2>&1 && {
|
5
|
+
command -v ${ANDROID_HOME}/tools/bin/sdkmanager >/dev/null 2>&1 && {
|
6
6
|
|
7
7
|
local ANDROIDHOME_BEFORE=$(du -hs $ANDROID_HOME | cut -f1)
|
8
8
|
|
9
9
|
echo "=== android sdkmanager cleanup ==="
|
10
10
|
echo " - BEFORE CLEANUP: ${ANDROIDHOME_BEFORE} (${ANDROID_HOME})"
|
11
11
|
|
12
|
+
# remove .downloadIntermediates folder if it exists
|
13
|
+
if [ -d "${ANDROID_HOME}/.downloadIntermediates" ]; then
|
14
|
+
echo " - removing ${ANDROID_HOME}/.downloadIntermediates"
|
15
|
+
rm -rf "${ANDROID_HOME}/.downloadIntermediates"
|
16
|
+
fi
|
12
17
|
# create temporary output file
|
13
18
|
local OUTFILENAME=$(mktemp)
|
14
19
|
|
15
|
-
sdkmanager --list_installed --include_obsolete
|
20
|
+
local SDKMANAGER_OUTPUT=$(sdkmanager --list_installed --include_obsolete)
|
21
|
+
echo "${SDKMANAGER_OUTPUT}" |
|
16
22
|
awk -f "${THISMODULEDIR}/android-sdk.awk" -v outputFile="${OUTFILENAME}"
|
17
23
|
|
18
24
|
if [ $? -ne 0 ]; then
|
19
25
|
echo " WARNING: we couldn't parse the output of 'sdkmanager --list_installed --include_obsolete'"
|
20
|
-
echo " (
|
21
|
-
return
|
26
|
+
echo " (very likely there's just nothing to remove)"
|
27
|
+
return 100
|
22
28
|
fi
|
23
29
|
|
24
30
|
echo " - packages to remove: "
|
@@ -28,10 +34,11 @@ androidSDK() {
|
|
28
34
|
sdkmanager --uninstall --package_file="${OUTFILENAME}"
|
29
35
|
local ANDROIDHOME_AFTER=$(du -hs $ANDROID_HOME | cut -f1)
|
30
36
|
|
31
|
-
echo " - BEFORE CLEANUP: ${ANDROIDHOME_BEFORE} (${ANDROID_HOME})"
|
32
|
-
echo " - AFTER CLEANUP: ${ANDROIDHOME_AFTER}"
|
37
|
+
echo " - BEFORE ANDROID SDKMANAGER CLEANUP: ${ANDROIDHOME_BEFORE} (${ANDROID_HOME})"
|
38
|
+
echo " - AFTER ANDROID SDKMANAGER CLEANUP: ${ANDROIDHOME_AFTER}"
|
39
|
+
addHint "- You may need to run android's SDK manager to restore the Android SDK versions you were using"
|
33
40
|
} || {
|
34
|
-
echo "'sdkmanager' command not found"
|
41
|
+
echo "'${ANDROID_HOME}/tools/bin/sdkmanager' command not found"
|
35
42
|
return 1
|
36
43
|
}
|
37
44
|
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
cocoapods() {
|
2
|
+
if [ -d ${HOME}/.cocoapods ]; then
|
3
|
+
# Pods folders
|
4
|
+
echo "=== clearing Pods folders ==="
|
5
|
+
pod cache clean --all
|
6
|
+
echo " - looking for Pods folders in ${DEVELOPMENT_BASE_DIR}... "
|
7
|
+
local PODS_FOLDERS=$(
|
8
|
+
find -E "${DEVELOPMENT_BASE_DIR}" -type d \
|
9
|
+
-regex '^.*Pods$' \
|
10
|
+
-not -regex "${HOME}/\..*" \
|
11
|
+
-not -regex "^.*Pods.+"
|
12
|
+
)
|
13
|
+
echo " - found Pods folders:"
|
14
|
+
IFS=$'\n' # make newlines the only separator
|
15
|
+
for PODS_FOLDER in ${PODS_FOLDERS}; do
|
16
|
+
echo " - ${PODS_FOLDER}"
|
17
|
+
done
|
18
|
+
echo " - running 'rm -rf ' in each of the above"
|
19
|
+
local PODS_WERE_REMOVED=0
|
20
|
+
for PODS_FOLDER in ${PODS_FOLDERS}; do
|
21
|
+
PODS_WERE_REMOVED=1
|
22
|
+
local PODS_FOLDER_SIZE=$(du -hs "${PODS_FOLDER}" | cut -f1)
|
23
|
+
printf " - removing '${PODS_FOLDER}' (${PODS_FOLDER_SIZE}) ... "
|
24
|
+
rm -rf "${PODS_FOLDER}"
|
25
|
+
echo "done"
|
26
|
+
done
|
27
|
+
unset IFS
|
28
|
+
if [ ${PODS_WERE_REMOVED} -eq 1 ]; then
|
29
|
+
addHint "- You'll need to perform a 'pod install' (or npx pod-install) in each of your projects"
|
30
|
+
fi
|
31
|
+
fi
|
32
|
+
}
|
package/modules/hints.sh
ADDED
package/modules/node-modules.sh
CHANGED
@@ -13,13 +13,18 @@ nodeModules() {
|
|
13
13
|
for NODE_MODULE_FOLDER in ${NODE_MODULE_FOLDERS}; do
|
14
14
|
echo " - ${NODE_MODULE_FOLDER}"
|
15
15
|
done
|
16
|
+
local MODULESWERE_REMOVED=0
|
16
17
|
echo " - running 'rm -rf ' in each of the above"
|
17
18
|
for NODE_MODULE_FOLDER in ${NODE_MODULE_FOLDERS}; do
|
19
|
+
MODULESWERE_REMOVED=1
|
18
20
|
local NODE_MODULE_SIZE=$(du -hs "${NODE_MODULE_FOLDER}" | cut -f1)
|
19
21
|
printf " - removing '${NODE_MODULE_FOLDER}' (${NODE_MODULE_SIZE}) ... "
|
20
22
|
rm -rf "${NODE_MODULE_FOLDER}"
|
21
23
|
echo "done"
|
22
24
|
done
|
23
25
|
unset IFS
|
26
|
+
if [ ${MODULESWERE_REMOVED} -eq 1 ]; then
|
27
|
+
addHint "- You will need to reinstall node modules in each of your projects"
|
28
|
+
fi
|
24
29
|
|
25
30
|
}
|
package/modules/ruby-gems.sh
CHANGED
@@ -20,7 +20,7 @@ xcodeArtifacts() {
|
|
20
20
|
# Xcode DeviceLogs
|
21
21
|
if [ -d ${HOME}/Library/Developer/CoreSimulator/Caches ]; then
|
22
22
|
local XCCACHESIZE=$(du -hs ${HOME}/Library/Developer/CoreSimulator/Caches | cut -f1)
|
23
|
-
echo " removing Xcode Caches (${XCCACHESIZE})..."
|
23
|
+
echo " removing Xcode CoreSimulator Caches (${XCCACHESIZE})..."
|
24
24
|
rm -rf ${HOME}/Library/Developer/CoreSimulator/Caches
|
25
25
|
fi
|
26
26
|
|
@@ -35,11 +35,11 @@ xcodeArtifacts() {
|
|
35
35
|
awk '{\
|
36
36
|
r=$0;\
|
37
37
|
gsub(/^[^[:space:]]+[[:space:]]+/,"",r);\
|
38
|
-
printf("- This command would recover %s:\n rm -rf \"%s\"\n",$1, r);\
|
38
|
+
printf("- This command would recover an additional %s:\n rm -rf \"%s\"\n",$1, r);\
|
39
39
|
}'
|
40
40
|
)
|
41
41
|
echo "${DEVICESUPPORTCOMMAND}"
|
42
|
-
|
42
|
+
addHint "${DEVICESUPPORTCOMMAND}"
|
43
43
|
fi
|
44
44
|
fi # xcode
|
45
45
|
}
|