@@ -30,25 +30,38 @@ formatByteCount() {
30
30
numfmt --to=iec-i --suffix=B --padding=7 " $1 " ' 000'
31
31
}
32
32
33
- # macro to output saved space
34
- printSavedSpace () {
35
- # Disk space before the operation
36
- local before=${1}
37
- local title=${2:- }
33
+ isX86 () {
34
+ local arch
35
+ arch=$( uname -m)
36
+ if [ " $arch " = " x86_64" ]; then
37
+ return 0
38
+ else
39
+ return 1
40
+ fi
41
+ }
42
+
43
+ # Measure saved space and how long it took to run the task
44
+ execAndMeasure () {
45
+ local task_name=${1}
46
+
47
+ local start
48
+ start=$( date +%s)
38
49
50
+ local before
51
+ before=$( getAvailableSpace)
52
+
53
+ # Run the task. Skip the first argument because it's the task name.
54
+ " ${@: 2} "
55
+
56
+ local end
57
+ end=$( date +%s)
39
58
local after
40
59
after=$( getAvailableSpace)
60
+
41
61
local saved=$(( after - before))
62
+ local seconds_taken=$(( end - start))
42
63
43
- echo " "
44
- printSeparationLine " *"
45
- if [ -n " ${title} " ]; then
46
- echo " => ${title} : Saved $( formatByteCount " $saved " ) "
47
- else
48
- echo " => Saved $( formatByteCount " $saved " ) "
49
- fi
50
- printSeparationLine " *"
51
- echo " "
64
+ echo " ==> ${task_name} : Saved $( formatByteCount " $saved " ) in $seconds_taken seconds"
52
65
}
53
66
54
67
# macro to print output of df with caption
@@ -64,19 +77,6 @@ printDF() {
64
77
printSeparationLine " ="
65
78
}
66
79
67
- removeRecursive () {
68
- element=${1}
69
-
70
- local before
71
- if [ ! -e " $element " ]; then
72
- echo " ::warning::Directory or file $element does not exist, skipping."
73
- else
74
- before=$( getAvailableSpace)
75
- sudo rm -rf " $element "
76
- printSavedSpace " $before " " Removed $element "
77
- fi
78
- }
79
-
80
80
removeUnusedDirsAndFiles () {
81
81
local to_remove=(
82
82
" /etc/mysql"
@@ -133,11 +133,17 @@ removeUnusedDirsAndFiles() {
133
133
)
134
134
135
135
for element in " ${to_remove[@]} " ; do
136
- removeRecursive " $element "
136
+ if [ ! -e " $element " ]; then
137
+ echo " ::warning::Directory or file $element does not exist, skipping."
138
+ else
139
+ execAndMeasure " Removed $element " sudo rm -rf " $element "
140
+ fi
137
141
done
138
142
}
139
143
140
144
removeNodeModules () {
145
+ npm list -g --depth=0
146
+
141
147
sudo npm uninstall -g \
142
148
" @bazel/bazelisk" \
143
149
" bazel" \
@@ -153,53 +159,50 @@ removeNodeModules() {
153
159
" yarn"
154
160
}
155
161
156
- execAndMeasureSpaceChange () {
157
- local operation=${1} # Function to execute
158
- local title=${2}
159
-
160
- local before
161
- before=$( getAvailableSpace)
162
- $operation
163
-
164
- printSavedSpace " $before " " $title "
165
- }
166
-
167
162
# Remove large packages
168
163
# REF: https://github.com/apache/flink/blob/master/tools/azure-pipelines/free_disk_space.sh
169
164
cleanPackages () {
170
- sudo apt-get purge -y --autoremove --fix-missing \
171
- ' .*-icon-theme$' \
172
- ' ^aspnetcore-.*' \
173
- ' ^dotnet-.*' \
174
- ' ^java-*' \
175
- ' ^libllvm.*' \
176
- ' ^llvm-.*' \
177
- ' ^mercurial.*' \
178
- ' ^mysql-.*' \
179
- ' ^vim.*' \
180
- ' ^fonts-.*' \
181
- ' azure-cli' \
182
- ' buildah' \
183
- ' cpp-13' \
184
- ' firefox' \
185
- ' gcc-12' \
186
- ' gcc-13' \
187
- ' gcc-14' \
188
- ' gcc' \
189
- ' g++-14' \
190
- ' gfortran-14' \
191
- ' google-chrome-stable' \
192
- ' google-cloud-cli' \
193
- ' groff-base' \
194
- ' kubectl' \
195
- ' libgl1-mesa-dri' \
196
- ' microsoft-edge-stable' \
197
- ' php.*' \
198
- ' podman' \
199
- ' powershell' \
200
- ' skopeo' \
201
- ' snapd' \
165
+ local packages=(
166
+ ' .*-icon-theme$'
167
+ ' ^aspnetcore-.*'
168
+ ' ^dotnet-.*'
169
+ ' ^java-*'
170
+ ' ^libllvm.*'
171
+ ' ^llvm-.*'
172
+ ' ^mercurial.*'
173
+ ' ^mysql-.*'
174
+ ' ^vim.*'
175
+ ' ^fonts-.*'
176
+ ' azure-cli'
177
+ ' buildah'
178
+ ' cpp-13'
179
+ ' firefox'
180
+ ' gcc-12'
181
+ ' gcc-13'
182
+ ' gcc-14'
183
+ ' gcc'
184
+ ' g++-14'
185
+ ' gfortran-14'
186
+ ' groff-base'
187
+ ' kubectl'
188
+ ' libgl1-mesa-dri'
189
+ ' microsoft-edge-stable'
190
+ ' php.*'
191
+ ' podman'
192
+ ' powershell'
193
+ ' skopeo'
194
+ ' snapd'
202
195
' tmux'
196
+ )
197
+
198
+ if isX86; then
199
+ packages+=(
200
+ ' google-chrome-stable'
201
+ ' google-cloud-cli'
202
+ )
203
+ fi
204
+
205
+ sudo apt-get purge -y --autoremove --fix-missing " ${packages[@]} "
203
206
204
207
echo " => apt-get autoremove"
205
208
sudo apt-get autoremove -y || echo " ::warning::The command [sudo apt-get autoremove -y] failed"
@@ -215,28 +218,33 @@ cleanSwap() {
215
218
}
216
219
217
220
removePythonPackages () {
218
- sudo pipx uninstall ansible-core
219
- }
220
-
221
- # Display initial disk space stats
221
+ local packages=(
222
+ )
222
223
223
- AVAILABLE_INITIAL=$( getAvailableSpace)
224
+ if isX86; then
225
+ packages+=(
226
+ ' ansible-core'
227
+ )
228
+ fi
224
229
225
- printDF " BEFORE CLEAN-UP:"
226
- echo " "
230
+ for p in " ${packages[@]} " ; do
231
+ sudo pipx uninstall " $p "
232
+ done
233
+ }
227
234
228
- execAndMeasureSpaceChange cleanPackages " Unused packages"
229
- execAndMeasureSpaceChange cleanSwap " Swap storage"
230
- execAndMeasureSpaceChange removeNodeModules " Node modules"
231
- execAndMeasureSpaceChange removePythonPackages " Python Packages"
235
+ main () {
236
+ printDF " BEFORE CLEAN-UP:"
237
+ echo " "
232
238
233
- removeUnusedDirsAndFiles
239
+ execAndMeasure " Unused packages" cleanPackages
240
+ execAndMeasure " Swap storage" cleanSwap
241
+ execAndMeasure " Node modules" removeNodeModules
242
+ execAndMeasure " Python Packages" removePythonPackages
234
243
235
- # Output saved space statistic
236
- echo " "
237
- printDF " AFTER CLEAN-UP:"
244
+ removeUnusedDirsAndFiles
238
245
239
- echo " "
240
- echo " "
246
+ printDF " AFTER CLEAN-UP:"
247
+ echo " "
248
+ }
241
249
242
- printSavedSpace " $AVAILABLE_INITIAL " " Total saved "
250
+ execAndMeasure " Total" main
0 commit comments