better shell setup scripting

This commit is contained in:
Galen Rowell 2021-07-20 19:41:50 +10:00
parent a6ea40d7ba
commit 15f20e8437

View file

@ -71,27 +71,28 @@ _setup_terminal_shell() {
_mappings_file="${_CONFIG_PATH}/lua/mappings.lua" _mappings_file="${_CONFIG_PATH}/lua/mappings.lua"
# only ask for shellname if running in terminal # only ask for shellname if running in terminal
if [ -t 1 ]; then if [ -t 1 ]; then
printf "%s\n: " "Which shell do you want to use ? [ Enter nothing for current shell ( $_CURRENT_SHELL ) ]" printf "\n%s\n" "Which shell do you want to use? (Eg. 2)"
read -r shellname printf "\t%s\n" "[ Enter nothing for current shell ( $_CURRENT_SHELL ) ]"
grep '^/bin/' '/etc/shells' | nl
read -r shellNUM
fi fi
shellname="${shellname:-${_CURRENT_SHELL}}"
printf "%s\n" "$shellname"
# don't try to do any changes if given shellname is same as bash # don't try to do any changes user wants their default shell in nvim
if ! [ bash = "$shellname" ]; then if [ ! -z "$shellNUM" ]; then
shellpath=$(grep '^/bin/' '/etc/shells' | sed -n "$shellNUM p")
# Reference: https://stackoverflow.com/a/4247319 # Reference: https://stackoverflow.com/a/4247319
if "${_SED}" -i'.bak' -e "s/bash/$shellname/g" "${_mappings_file}"; then # \( & \) will use regex brackets (for later reference with \1)
printf "\n%s\n" "=> Shell changed to $shellname on nvim successfully!" # ( & ) will match text brackets
if "${_SED}" --posix -i'.bak' -e "s=^\(map(.* \+*terminal\) \(.*)\)=\1$shellpath \2=g" "${_mappings_file}"; then
printf "%s\n" "=> Neovim shell changed to $shellpath successfully!"
else else
printf "\n%s\n" "Cannot edit with sed, edit ${_mappings_file} manually to replace bash with $shellname." printf "%s\n" "Cannot edit with sed, edit ${_mappings_file} manually to replace bash with $shellpath."
fi fi
rm -f "${_mappings_file}".bak # delete backup file created by sed rm -f "${_mappings_file}".bak # delete backup file created by sed
else
printf "\n%s\n" "=> Shell changed to $shellname on nvim successfully!"
fi fi
printf "%s\n\n" "=> Neovim shell will be ${shellpath:-${_CURRENT_SHELL}}"
return 0 return 0
} }
_setup_arguments() { _setup_arguments() {
# default variables to be used # default variables to be used
_CONFIG_PATH="${HOME}/.config/nvim" _CONFIG_PATH="${HOME}/.config/nvim"