3 # AX-ZSH: Alex' Modular ZSH Configuration
4 # Copyright (c) 2015-2022 Alexander Barton <alex@barton.de>
7 # Include "ax-common.sh":
9 for dir in "$HOME" "$HOME/.ax" /usr/local /opt/ax /usr; do
10 [ -z "$ax_common_sourced" ] || break
11 ax_common="${dir}/lib/ax/ax-common.sh"
12 # shellcheck source=/usr/local/lib/ax/ax-common.sh
13 [ -r "$ax_common" ] && . "$ax_common"
15 if [ -z "$ax_common_sourced" ]; then
21 unset dir ax_common ax_common_sourced
24 if [ -f "$1" ] && [ ! -L "$1" ]; then
25 rm -f "$1.bak" || abort
26 mv -v "$1" "$1.bak" || abort
32 ax_msg 2 "Failed to setup AX-ZSH!"
38 [ -n "$AXZSH" ] || AXZSH="${ZDOTDIR:-$HOME}/.axzsh"
43 if [ "$S" = "$AXZSH" ] || [ "$PWD" = "$AXZSH" ] || [ -L "$AXZSH" ]; then
44 ax_msg 1 "Initializing \"$AXZSH\":"
46 ax_msg 1 "Install AX-ZSH into \"$AXZSH\":"
47 mkdir -p "$AXZSH" || abort
49 ax_msg - "Copying binaries and scripts ..."
50 cp -pRv "$S/ax.zsh"* "$AXZSH/" || abort
51 mkdir -p "$AXZSH/bin" || abort
52 cp -pRv "$S/bin/"* "$AXZSH/bin/" || abort
54 for f in AUTHORS LICENSE.md README.md; do
55 cp -pRv "$S/$f" "$AXZSH/" || abort
58 ax_msg - "Copying plugins ..."
59 for plugin_type in core default_plugins plugins; do
60 mkdir -p "$AXZSH/$plugin_type" || abort
61 for p in "$S/$plugin_type/"*; do
62 echo "$p -> $AXZSH/$p"
63 rm -fr "${AXZSH:?}/$p" || abort
64 cp -pR "$S/$p" "$AXZSH/$p" || abort
68 ax_msg - "Copying themes ..."
69 mkdir -p "$AXZSH/themes" || abort
70 for p in "$S/themes/"*; do
71 echo "$p -> $AXZSH/$p"
72 rm -fr "${AXZSH:?}/$p" || abort
73 cp -pR "$S/$p" "$AXZSH/$p" || abort
77 mkdir -p "$AXZSH/custom_plugins" || abort
78 mkdir -p "$AXZSH/custom_themes" || abort
80 ax_msg - "Linking ZSH startup files ..."
83 ${ZDOTDIR:-$HOME}/.zlogin \
84 ${ZDOTDIR:-$HOME}/.zlogout \
85 ${ZDOTDIR:-$HOME}/.zprofile \
86 ${ZDOTDIR:-$HOME}/.zshrc \
89 ln -sv "$AXZSH/ax.zsh" "$f" || abort
92 if [ ! -d "$AXZSH/active_plugins" ]; then
93 ax_msg - "Initializing plugin directory \"$AXZSH/active_plugins\" ..."
94 if command -v zsh >/dev/null; then
95 zsh "$AXZSH/bin/axzshctl" reset-plugins || abort
97 ax_msg 1 "Oops, \"zsh\" not found!?"
101 ax_msg - "Plugin directory \"$AXZSH/active_plugins\" already exists. Ok."
104 ax_msg 0 "AX-ZSH setup successfully."