aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/gc50
1 files changed, 38 insertions, 12 deletions
diff --git a/bin/gc b/bin/gc
index e09ef13..7502e76 100755
--- a/bin/gc
+++ b/bin/gc
@@ -4,7 +4,7 @@ set -eu
usage() {
cat <<-'EOF'
Usage:
- gc
+ gc [TYPE]
gc -h
EOF
}
@@ -15,15 +15,29 @@ help() {
Options:
-h, --help show this message
+ TYPE what to do GC on (default: all):
+ - guix
+ - nohup
+ - trash
+ - tmpdir
+ - docker
+ - email
+ - vcs
+
Free disk space system-wide.
Examples:
- Just run it:
+ Just run it, for all:
$ gc
+
+
+ Cleanup tmpdir:
+
+ $ gc tmpdir
EOF
}
@@ -106,17 +120,29 @@ gc_vcs() {
}
+gc_all() {
+ set -x
+ gc_guix
+ gc_nohup
+ gc_trash
+ gc_tmpdir
+ gc_docker
+ gc_email
+ gc_vcs
+ set +x
+}
+
+TYPE="${1:-all}"
+CMD=gc_"$TYPE"
+if ! command -v "$CMD" >/dev/null; then
+ printf 'Invalid TYPE: "%s".\n\n' "$TYPE" >&2
+ usage >&2
+ exit 2
+fi
+
+
BEFORE="$(disk)"
-set -x
-gc_guix
-gc_nohup
-gc_trash
-gc_tmpdir
-gc_docker
-gc_email
-gc_vcs
-wait
-set +x
+"$CMD"
AFTER="$(disk)"
printf 'Disk space:\n'