55# MACROS
66# ======
77
8+ fast_rmdir () {
9+ if [[ -d " $1 " ]] && [[ -n " $1 " ]] && [[ ! " $1 " = " /" ]] && [[ ! " $1 " = " ~" ]]; then
10+ echo " Removing directory: $1 "
11+ sudo find " $1 " -type f -delete -print | wc -l
12+ sudo rm -rf " $1 "
13+ fi
14+ }
15+
16+ list_installed_dpkg () {
17+ dpkg --get-selections $@ | grep -v deinstall | awk ' {print $1}'
18+ }
19+
820# macro to print a line of equals
921# # (silly but works)
1022printSeparationLine () {
@@ -23,11 +35,10 @@ printSeparationLine() {
2335# macro to compute available space
2436# REF: https://unix.stackexchange.com/a/42049/60849
2537# REF: https://stackoverflow.com/a/450821/408734
26- getAvailableSpace () { df -a " $1 " | awk ' NR > 1 {avail+=$4} END {print avail}' ; }
27-
38+ getAvailableSpace () { echo $( df -a $1 | awk ' NR > 1 {avail+=$4} END {print avail}' ) ; }
2839# macro to make Kb human readable (assume the input is Kb)
2940# REF: https://unix.stackexchange.com/a/44087/60849
30- formatByteCount () { numfmt --to=iec-i --suffix=B --padding=7 " $1 " ' 000' ; }
41+ formatByteCount () { echo $( numfmt --to=iec-i --suffix=B --padding=7 $1 ' 000' ) ; }
3142
3243# macro to output saved space
3344printSavedSpace () {
@@ -80,7 +91,7 @@ echo ""
8091# Remove Android library
8192BEFORE=$( getAvailableSpace)
8293
83- sudo rm -rf /usr/local/lib/android || true
94+ fast_rmdir /usr/local/lib/android || true
8495
8596AFTER=$( getAvailableSpace)
8697SAVED=$(( AFTER- BEFORE))
@@ -91,7 +102,7 @@ printSavedSpace $SAVED "Android library"
91102BEFORE=$( getAvailableSpace)
92103
93104# https://github.community/t/bigger-github-hosted-runners-disk-space/17267/11
94- sudo rm -rf /usr/share/dotnet || true
105+ fast_rmdir /usr/share/dotnet || true
95106
96107AFTER=$( getAvailableSpace)
97108SAVED=$(( AFTER- BEFORE))
@@ -100,8 +111,8 @@ printSavedSpace $SAVED ".NET runtime"
100111# Remove Haskell runtime
101112BEFORE=$( getAvailableSpace)
102113
103- sudo rm -rf /opt/ghc || true
104- sudo rm -rf /usr/local/.ghcup || true
114+ fast_rmdir /opt/ghc || true
115+ fast_rmdir /usr/local/.ghcup || true
105116
106117AFTER=$( getAvailableSpace)
107118SAVED=$(( AFTER- BEFORE))
@@ -112,17 +123,19 @@ printSavedSpace $SAVED "Haskell runtime"
112123
113124BEFORE=$( getAvailableSpace)
114125
115- sudo apt-get remove -y ' ^aspnetcore-.*' || echo " ::warning::The command [sudo apt-get remove -y '^aspnetcore-.*'] failed to complete successfully. Proceeding..."
116- sudo apt-get remove -y ' ^dotnet-.*' --fix-missing || echo " ::warning::The command [sudo apt-get remove -y '^dotnet-.*' --fix-missing] failed to complete successfully. Proceeding..."
117- sudo apt-get remove -y ' ^llvm-.*' --fix-missing || echo " ::warning::The command [sudo apt-get remove -y '^llvm-.*' --fix-missing] failed to complete successfully. Proceeding..."
118- sudo apt-get remove -y ' php.*' --fix-missing || echo " ::warning::The command [sudo apt-get remove -y 'php.*' --fix-missing] failed to complete successfully. Proceeding..."
119- sudo apt-get remove -y ' ^mongodb-.*' --fix-missing || echo " ::warning::The command [sudo apt-get remove -y '^mongodb-.*' --fix-missing] failed to complete successfully. Proceeding..."
120- sudo apt-get remove -y ' ^mysql-.*' --fix-missing || echo " ::warning::The command [sudo apt-get remove -y '^mysql-.*' --fix-missing] failed to complete successfully. Proceeding..."
121- sudo apt-get remove -y azure-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri --fix-missing || echo " ::warning::The command [sudo apt-get remove -y azure-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri --fix-missing] failed to complete successfully. Proceeding..."
122- sudo apt-get remove -y google-cloud-sdk --fix-missing || echo " ::debug::The command [sudo apt-get remove -y google-cloud-sdk --fix-missing] failed to complete successfully. Proceeding..."
123- sudo apt-get remove -y google-cloud-cli --fix-missing || echo " ::debug::The command [sudo apt-get remove -y google-cloud-cli --fix-missing] failed to complete successfully. Proceeding..."
124- sudo apt-get autoremove -y || echo " ::warning::The command [sudo apt-get autoremove -y] failed to complete successfully. Proceeding..."
125- sudo apt-get clean || echo " ::warning::The command [sudo apt-get clean] failed to complete successfully. Proceeding..."
126+ pkgs=$( list_installed_dpkg ' microsoft-edge-*' ' snapd-*' ' aspnetcore-*' ' dotnet-*' ' llvm-*' ' *php*' ' mongodb-*' ' mysql-*' azure-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri ' google-cloud-*' ' gcloud-*' || true)
127+ gcloud_prerm=' #!/bin/sh
128+ echo $0
129+ if [ -d "/usr/lib/google-cloud-sdk" ]; then
130+ echo "Cleaning Google Cloud CLI files..."
131+ find /usr/lib/google-cloud-sdk -type f -delete -print | wc -l
132+ rm -rf /usr/lib/google-cloud-sdk
133+ echo "Cleaning Google Cloud CLI manuals..."
134+ find /usr/share/man -type f -name "gcloud*" -delete -print | wc -l
135+ fi'
136+ echo " $gcloud_prerm " | sudo tee /var/lib/dpkg/info/google-cloud-cli-anthoscli.prerm > /dev/null
137+ echo " $gcloud_prerm " | sudo tee /var/lib/dpkg/info/google-cloud-cli.prerm > /dev/null
138+ sudo apt-get remove --autoremove -y $pkgs || echo " ::warning::The command [sudo apt-get remove -y] failed to complete successfully. Proceeding..."
126139
127140AFTER=$( getAvailableSpace)
128141SAVED=$(( AFTER- BEFORE))
0 commit comments