diff options
-rw-r--r-- | rust.eselect.in | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/rust.eselect.in b/rust.eselect.in index d0f3361..1360dc2 100644 --- a/rust.eselect.in +++ b/rust.eselect.in @@ -177,6 +177,33 @@ set_version() { die -q "symlink list copying failed" } +### cleanup action ### +describe_cleanup() { + echo "This action is not to be called manually." +} + +do_cleanup() { + [[ -z ${@} ]] || die -q "This function does not expect any arguments" + + # Do we need to clean up? + local missing_symlinks=( $(find_missing_broken_symlinks) ) + if [[ ${#missing_symlinks[@]} -eq 0 ]]; then + echo "Nothing to clean up." + return + fi + + unset_version + + local targets=( $(find_targets) ) + + if [[ ${#targets[@]} -ne 0 ]]; then + echo "Marking the latest still installed version as default..." + do_set ${#targets[@]} + else + echo "No Rust profiles left on the system. Stale symlinks removed." + fi +} + ### list action ### describe_list() { |