From be6d24ec22cc2ef8086098d6322b024e07c5758c Mon Sep 17 00:00:00 2001 From: Hodlinator <172445034+hodlinator@users.noreply.github.com> Date: Mon, 9 Mar 2026 11:04:30 +0100 Subject: [PATCH] guix: Make guix-clean less destructive * Show preview and ask for confirmation before git clean unless used with "--force" * Error out when trying to pass args such as "guix-clean --help" --- contrib/guix/guix-clean | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/contrib/guix/guix-clean b/contrib/guix/guix-clean index 9af0a793cff..32258cd7477 100755 --- a/contrib/guix/guix-clean +++ b/contrib/guix/guix-clean @@ -9,6 +9,14 @@ set -e -o pipefail # shellcheck source=libexec/prelude.bash source "$(dirname "${BASH_SOURCE[0]}")/libexec/prelude.bash" +# Parse supported args +FORCE=0 +if [[ $* == "--force" ]]; then + FORCE=1 +elif [ $# != 0 ]; then + echo "Script only takes optional --force arg." + exit 1 +fi ################### ## Sanity Checks ## @@ -80,4 +88,14 @@ for precious_dirs_file in "${found_precious_dirs_files[@]}"; do done < "$precious_dirs_file" done +if [[ $FORCE == 0 ]]; then + git clean -nxdff "${exclude_flags[@]}" + + read -p "Proceed? (y/n) " -r + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "Aborted." + exit 1 + fi +fi + git clean -xdff "${exclude_flags[@]}"