diff options
| author | EuAndreh <eu@euandre.org> | 2022-05-12 03:02:40 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2022-05-12 04:19:22 -0300 |
| commit | 7355acf9003ffde574d76b552e7b44b9d65db003 (patch) | |
| tree | 01565003a9cdc20854edea75614649391e52c84c | |
| parent | .local/bin/{mkstemp,mkdtemp}: Add working versions (diff) | |
| download | dotfiles-7355acf9003ffde574d76b552e7b44b9d65db003.tar.gz dotfiles-7355acf9003ffde574d76b552e7b44b9d65db003.tar.xz | |
.local/bin/gc: Add working version
| -rwxr-xr-x | .local/bin/gc | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/.local/bin/gc b/.local/bin/gc new file mode 100755 index 00000000..ec6a8f19 --- /dev/null +++ b/.local/bin/gc @@ -0,0 +1,105 @@ +#!/bin/sh +set -eu + +usage() { + cat <<-'EOF' + Usage: + gc + gc -h + EOF +} + +help() { + cat <<-'EOF' + + Options: + -h, --help show this message + EOF +} + +for flag in "$@"; do + case "$flag" in + --) + break + ;; + --help) + usage + help + exit + ;; + *) + ;; + esac +done + +while getopts 'h' flag; do + case "$flag" in + h) + usage + help + exit + ;; + *) + usage >&2 + exit 2 + ;; + esac +done +shift $((OPTIND - 1)) + + +disk() { + df -h . | + awk 'NR == 2 { printf "%s - %s/%s\n", $4, $3, $2 }' +} + + +gc_guix() { + pass show velhinho/0-andreh-password | sudo -S guix system delete-generations + guix home delete-generations + guix gc -d +} + +gc_nohup() { + find ~/ -type f -name 'nohup.out' -exec rm -vf "{}" \; +} + +gc_trash() { + yes | trash-empty +} + +gc_tmpdir() { + find /tmp/ -type f -atime +10 -exec rm -vf "{}" \; ||: +} + +gc_docker() { + if command -v docker; then + yes | docker system prune -a + docker rmi "$(docker images -a -q)" ||: + docker rm "$(docker ps -a -f status=exited -q)" ||: + docker stop "$(docker ps -a -q)" ||: + docker rm "$(docker ps -a -q)" ||: + yes | docker volume prune + yes | docker container prune + fi +} + +gc_email() { + notmuch search --output=files --exclude=false tag:killed | + xargs -I{} rm -vf "{}" +} + + +BEFORE="$(disk)" +gc_guix +gc_nohup +gc_trash +gc_tmpdir +gc_docker +gc_email +wait +AFTER="$(disk)" + +printf 'Disk space:\n' +printf ' before: %s\n' "$BEFORE" +printf ' after: %s\n' "$AFTER" |
