54 lines
1.9 KiB
Bash
Executable file
54 lines
1.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#|---/ /+---------------------------+---/ /|#
|
|
#|--/ /-| Script to configure shell |--/ /-|#
|
|
#|-/ /--| Prasanth Rangan |-/ /--|#
|
|
#|/ /---+---------------------------+/ /---|#
|
|
|
|
scrDir=$(dirname "$(realpath "$0")")
|
|
source "${scrDir}/global_fn.sh"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: unable to source global_fn.sh..."
|
|
exit 1
|
|
fi
|
|
|
|
if chk_list "myShell" "${shlList[@]}"; then
|
|
echo -e "\033[0;32m[SHELL]\033[0m detected // ${myShell}"
|
|
else
|
|
echo "Error: user shell not found"
|
|
exit 1
|
|
fi
|
|
|
|
# add zsh plugins
|
|
if pkg_installed zsh && pkg_installed oh-my-zsh-git; then
|
|
|
|
# set variables
|
|
Zsh_rc="${ZDOTDIR:-$HOME}/.zshrc"
|
|
Zsh_Path="/usr/share/oh-my-zsh"
|
|
Zsh_Plugins="$Zsh_Path/custom/plugins"
|
|
Fix_Completion=""
|
|
|
|
# generate plugins from list
|
|
while read r_plugin; do
|
|
z_plugin=$(echo "${r_plugin}" | awk -F '/' '{print $NF}')
|
|
if [ "${r_plugin:0:4}" == "http" ] && [ ! -d "${Zsh_Plugins}/${z_plugin}" ]; then
|
|
sudo git clone "${r_plugin}" "${Zsh_Plugins}/${z_plugin}"
|
|
fi
|
|
if [ "${z_plugin}" == "zsh-completions" ] && [ "$(grep 'fpath+=.*plugins/zsh-completions/src' "${Zsh_rc}" | wc -l)" -eq 0 ]; then
|
|
Fix_Completion='\nfpath+=${ZSH_CUSTOM:-${ZSH:-/usr/share/oh-my-zsh}/custom}/plugins/zsh-completions/src'
|
|
else
|
|
[ -z "${z_plugin}" ] || w_plugin+=" ${z_plugin}"
|
|
fi
|
|
done < <(cut -d '#' -f 1 "${scrDir}/restore_zsh.lst" | sed 's/ //g')
|
|
|
|
# update plugin array in zshrc
|
|
echo -e "\033[0;32m[SHELL]\033[0m installing plugins (${w_plugin} )"
|
|
sed -i "/^plugins=/c\plugins=(${w_plugin} )${Fix_Completion}" "${Zsh_rc}"
|
|
fi
|
|
|
|
# set shell
|
|
if [[ "$(grep "/${USER}:" /etc/passwd | awk -F '/' '{print $NF}')" != "${myShell}" ]]; then
|
|
echo -e "\033[0;32m[SHELL]\033[0m changing shell to ${myShell}..."
|
|
chsh -s "$(which "${myShell}")"
|
|
else
|
|
echo -e "\033[0;33m[SKIP]\033[0m ${myShell} is already set as shell..."
|
|
fi
|