X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=bin%2Faxzshctl;h=4feade120037cebd602eb28ec925f0a8f37eee20;hb=d8e7885c676a01eac4d1da81ca5da23cea6f6c6e;hp=1c41425990e0fb4091d6a2a5bd43a1a97fb5cb9c;hpb=a8f02bd2e0dab5a1c1d9d3aec7b34c797e8ee4be;p=ax-zsh.git diff --git a/bin/axzshctl b/bin/axzshctl index 1c41425..4feade1 100755 --- a/bin/axzshctl +++ b/bin/axzshctl @@ -57,7 +57,7 @@ function Usage { function UpdatePluginCache { [[ -r "$AXZSH/cache" ]] || return 0 - ax_msg - "Updating plugin cache ..." + [[ "$1" = "-v" ]] && ax_msg - "Updating plugin cache ..." rm -rf \ $AXZSH/cache/zlogin.cache \ $AXZSH/cache/zlogout.cache \ @@ -80,7 +80,7 @@ function NormalizedPluginName { function EnableAXZSH { for f (~/.zlogin ~/.zlogout ~/.zprofile ~/.zshrc); do - ln -sv "$AXZSH/ax.zsh" "$f" \ + ln -s "$AXZSH/ax.zsh" "$f" \ || ax_error "Failed to create symbolic link for \"$f\"!" done } @@ -88,7 +88,7 @@ function EnableAXZSH { function DisableAXZSH { for f (~/.zlogin ~/.zlogout ~/.zprofile ~/.zshrc); do if [ -h "$f" ]; then - rm -v "$f" || ax_msg 2 "Failed to remove \"$f\"!" + rm "$f" || ax_msg 2 "Failed to remove \"$f\"!" elif [ -e "$f" ]; then ax_error "Error: Not removing \"$f\", it is not a symbolic link!" else @@ -112,18 +112,19 @@ function EnablePlugin { if [[ ! -e "$AXZSH/repos/$plugin" ]]; then ax_msg - "Cloning module from GitHub ..." git clone --depth=1 "https://github.com/$1.git" \ - "$AXZSH/repos/$plugin" + "$AXZSH/repos/$plugin" \ + || ax_error "Failed to clone repository!" fi # Try to enable a theme in this "foreign module", but ignore # errors: we don't know if this module provides a theme or is # a "regular" plugin ... if SetTheme "${plugin#*#}" 2>/dev/null; then - ax_msg 1 "Module \"$1\" was enabled as theme \"${plugin#*#}\"." + ax_msg 0 "Module \"$1\" was enabled as theme \"${plugin#*#}\"." # A theme was enabled: So assume that this is a theme # and don't enable it as plugin. return 0 fi - echo "Module \"$1\" will be enabled as plugin ..." + echo "Trying to enable \"$1\" as plugin ..." fi for dname ( @@ -138,11 +139,15 @@ function EnablePlugin { ); do [[ ! -d "$dname" ]] && continue mkdir -p "$dir" - ( + if ! ( cd "$dir" || exit 9 - ln -sv "$dname" "$PWD" - ) - return $? + ln -s "$dname" "$PWD" + ); then + ax_error "Failed to create link!" + return 1 + fi + ax_msg 0 "Plugin \"$plugin\" enabled." + return 0 done ax_error "Plugin \"$1\" not found!" @@ -152,14 +157,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 } @@ -188,11 +208,11 @@ function ResetPlugins { function EnableDefaultPlugins { local dir="$AXZSH/active_plugins" - ax_msg - "Activating (linking) default plugins ..." + ax_msg - "Activating default plugins ..." mkdir -p "$dir" ( cd "$dir" || exit 9 - ln -sfv "$AXZSH/default_plugins/"* "$PWD" + ln -sf "$AXZSH/default_plugins/"* "$PWD" ) return $? } @@ -232,7 +252,7 @@ function SetTheme { return 1 fi fi - ln -fsv "$theme" "$link_name" || return 1 + ln -fs "$theme" "$link_name" || return 1 return $? } @@ -399,7 +419,7 @@ case "$cmd" in ;; "update-caches") [[ $# -eq 0 ]] || Usage - UpdatePluginCache + UpdatePluginCache -v ;; "--help") Usage