]> arthur.barton.de Git - ax-zsh.git/blobdiff - bin/axzshctl
Don't call external tools, use variable modifiers
[ax-zsh.git] / bin / axzshctl
index c6342c80b4cfe664d49751d77b019df199ef601e..eb56c812d2cfcc0f24e144b61d623de606c9940d 100755 (executable)
@@ -23,16 +23,25 @@ fi
 unset dir ax_common ax_common_sourced
 
 function Usage {
-       echo "$NAME <command> [...]"
+       echo "Usage: $NAME <command> [...]"
        echo
-       echo "  enable-plugin <p> [<p> [...]]"
+       echo "  enable-plugin <name|directory> [<name|directory> [...]]"
        echo "    Enable plugin(s)."
        echo
-       echo "  disable-plugin <p> [<p> [...]]"
+       echo "  disable-plugin <name> [<name> [...]]"
        echo "    Disable plugin(s)."
        echo
        echo "  reset-plugins"
-       echo "    Reset active plugins to the default list."
+       echo "    Reset active plugins to the default set."
+       echo
+       echo "  enable-default-plugins"
+       echo "    Enable all default plugins."
+       echo
+       echo "  set-theme <name>|-"
+       echo "    Set active theme to <name>, or to the default."
+       echo
+       echo "  upgrade"
+       echo "    Upgrade AX-ZSH installation (requires Git)."
        echo
        exit 2
 }
@@ -46,8 +55,10 @@ function EnablePlugin {
        fi
 
        for dname (
+               "$plugin:A"
                "$AXZSH_PLUGIN_D/$plugin"
                "$ZSH_CUSTOM/$plugin"
+               "$AXZSH/custom_plugins/$plugin"
                "$AXZSH/plugins/$plugin"
                "$AXZSH/default_plugins/$plugin"
                "$AXZSH/core/$plugin"
@@ -84,17 +95,65 @@ function ResetPlugins {
                ax_msg - "Removing all symbolic links in $dir ..."
                find "$dir" -type l -print -delete
        fi
+       return $?
+}
+
+function EnableDefaultPlugins {
+       local dir="$AXZSH/active_plugins"
 
        ax_msg - "Activating (linking) default plugins ..."
        mkdir -p "$dir"
        (
                cd "$dir" || exit 9
-               ln -sv "$AXZSH/default_plugins/"* "$PWD"
+               ln -sfv "$AXZSH/default_plugins/"* "$PWD"
        )
        return $?
 }
 
-NAME="$(basename "$0")"
+function SetTheme {
+       local link_name="$AXZSH/active_theme"
+
+       if [ $# -ne 1 ]; then
+               echo "Usage: axzsh_set_theme <name|->"
+               return 1
+       fi
+
+       rm -f "$link_name" || return 1
+
+       if [ "$1" = "-" ]; then
+               echo "Theme settings have been reset."
+               return 0
+       fi
+
+       if [ -r "$1" ]; then
+               theme="$1"
+       elif [ -r "$AXZSH/custom_themes/$1.axzshtheme" ]; then
+               theme="$AXZSH/custom_themes/$1.axzshtheme"
+       elif [ -r "$AXZSH/themes/$1.axzshtheme" ]; then
+               theme="$AXZSH/themes/$1.axzshtheme"
+       else
+               echo "Theme \"$1\" not found!"
+               return 1
+       fi
+       ln -sv "$theme" "$link_name" || return 1
+       return $?
+}
+
+function UpgradeAXZSH {
+       if [[ $+commands[git] -eq 0 ]]; then
+               ax_msg 2 "The git(1) command is not available!"
+               return 1
+       fi
+       if [[ ! -d "$AXZSH/.git" ]]; then
+               ax_msg 2 "AX-ZSH seems not to be installed using Git. Can't upgrade!"
+               return 1
+       fi
+
+       ax_msg - "Upgrading AX-ZSH in \"$AXZSH\" using git(1) ..."
+       ( cd "$AXZSH" && git pull --ff-only )
+}
+
+NAME="$0:t"
 
 [[ $# -gt 0 ]] || Usage
 
@@ -122,6 +181,19 @@ case "$cmd" in
        "reset-plugins")
                [[ $# -eq 0 ]] || Usage
                ResetPlugins
+               EnableDefaultPlugins
+               ;;
+       "enable-default-plugins")
+               [[ $# -eq 0 ]] || Usage
+               EnableDefaultPlugins
+               ;;
+       "set-theme")
+               [[ $# -eq 1 ]] || Usage
+               SetTheme "$1"
+               ;;
+       "upgrade")
+               [[ $# -eq 0 ]] || Usage
+               UpgradeAXZSH
                ;;
        *)
                Usage