]> arthur.barton.de Git - ax-zsh.git/blobdiff - bin/axzshctl
axzshctl: Handle themes on "disable-plugin" & clean up repositories
[ax-zsh.git] / bin / axzshctl
index 0c4da38f492caf61cc8959e18f5323de70a6a737..cd463e3ded886e9f5b4ab08bed5925d00b8e9e22 100755 (executable)
@@ -51,7 +51,7 @@ function Usage {
        echo "  update-caches"
        echo "    Force rebuild of all cache files."
        echo
-       exit 2
+       exit 0
 }
 
 function UpdatePluginCache {
@@ -152,14 +152,29 @@ function EnablePlugin {
 function DisablePlugin {
        local plugin=$(NormalizedPluginName "$1")
        local dir="$AXZSH/active_plugins"
+       local r=-1
 
-       if [[ ! -h "$dir/$plugin" ]]; then
-               ax_msg 1 "Plugin \"$1\" not active?"
-               return 1
+       # Active theme?
+       if [[ $(readlink "$AXZSH/active_theme") = "$AXZSH/repos/$plugin/"* ]]; then
+               rm "$AXZSH/active_theme"; r=$?
+       fi
+
+       # Active plugin?
+       if [[ -h "$dir/$plugin" ]]; then
+               rm "$dir/$plugin"; r=$?
+       fi
+
+       if [[ $r -eq -1 ]]; then
+               ax_msg 1 "Plugin \"$1\" not active, nothing to do?"
+               r=1
+       fi
+
+       if [[ "$plugin" = *"#"* ]]; then
+               # Name matches a cloned repository, try to clean up!
+               echo "Cleaning up cloned repository ..."
+               rm -fr "$AXZSH/repos/$plugin"
        fi
 
-       rm -v "$dir/$plugin"; r=$?
-       [ $r -eq 0 ] && rm -fr "$AXZSH/repos/$plugin"
        return $r
 }
 
@@ -401,6 +416,11 @@ case "$cmd" in
                [[ $# -eq 0 ]] || Usage
                UpdatePluginCache
                ;;
-       *)
+       "--help")
                Usage
+               ;;
+       *)
+               ax_error "Invalid command \"$cmd\"!"
+               ax_error "Try \"$0 --help\" for more information."
+               exit 2
 esac