-#!/bin/zsh
+#!/usr/bin/env zsh
#
# AX-ZSH: Alex' Modular ZSH Configuration
# Copyright (c) 2015-2016 Alexander Barton <alex@barton.de>
function Usage {
echo "Usage: $NAME <command> [...]"
echo
+ echo " enable"
+ echo " Enable AX-ZSH altogether."
+ echo
+ echo " disable"
+ echo " Disable AX-ZSH altogether."
+ echo
echo " enable-plugin <name|directory> [<name|directory> [...]]"
echo " Enable plugin(s)."
echo
fi
}
+function EnableAXZSH {
+ for f (~/.zlogin ~/.zlogout ~/.zprofile ~/.zshrc); do
+ ln -sv "$AXZSH/ax.zsh" "$f" \
+ || ax_msg 2 "Failed to create symbolic link for \"$f\"!"
+ done
+}
+
+function DisableAXZSH {
+ for f (~/.zlogin ~/.zlogout ~/.zprofile ~/.zshrc); do
+ if [ -h "$f" ]; then
+ rm -v "$f" || ax_msg 2 "Failed to remove \"$f\"!"
+ elif [ -e "$f" ]; then
+ ax_msg 2 "Error: Not removing \"$f\", it is not a symbolic link!"
+ else
+ ax_msg 1 "Warning: \"$f\" already does not exist. Ok."
+ fi
+ done
+}
+
function EnablePlugin {
local plugin=$(NormalizedPluginName "$1")
local dir="$AXZSH/active_plugins"
for dir ($AXZSH/plugins/*(N)); do
plugin=$(basename "$dir")
- # Check plugin blacklist
- case "$plugin" in
- "ssh_secure"|"zkbd")
- continue
- ;;
- esac
-
# Test if plugin is already enabled
[[ -e "$AXZSH/active_plugins/$plugin" ]] \
&& enabled=" (enabled)" \
new_plugin=""
for script ($AXZSH/plugins/$plugin/$plugin.{zshrc,zprofile}); do
[[ -r "$script" ]] || continue
- zsh -i -c "source $script"; r=$?
+ zsh -i -c "AXZSH_PLUGIN_CHECK=1 source $script"; r=$?
if [[ $r -eq 0 ]]; then
new_plugin=$plugin
break
detected_plugins+=($new_plugin)
[[ -n "$enabled" ]] || missing_plugins+=($new_plugin)
ax_msg 0 "OK."
+ elif [[ $r -eq 91 ]]; then
+ ax_msg 1 "ignored."
+ elif [[ $r -eq 92 ]]; then
+ ax_msg 1 "optional."
else
[[ -n "$enabled" ]] && invalid_plugins+=($plugin)
ax_msg 2 "failed."
[[ $# -gt 0 ]] || Usage
-if [[ -z "$AXZSH" || ! -d "$AXZSH" ]]; then
- ax_msg 2 "Oops, \"AXZSH\" is not set or invalid!"
- exit 3
+if [[ -z "$AXZSH" || ! -r "$AXZSH/ax.zsh" ]]; then
+ [[ -r "$HOME/.axzsh/ax.zsh" ]] && AXZSH="$HOME/.axzsh"
+ if [[ ! -r "$AXZSH/ax.zsh" ]]; then
+ ax_msg 2 "Oops, \"AXZSH\" is not set or invalid and can't be autodetected!"
+ exit 3
+ fi
fi
cmd="$1"
shift
case "$cmd" in
+ "enable")
+ [[ $# -eq 0 ]] || Usage
+ EnableAXZSH
+ ;;
+ "disable")
+ [[ $# -eq 0 ]] || Usage
+ DisableAXZSH
+ ;;
"enable-plugin")
[[ $# -gt 0 ]] || Usage
for plugin in "$@"; do