aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rust.eselect.in27
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() {