pull/169/merge
Šimon Let 3 years ago committed by GitHub
commit 92e0f2252b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 182
      scripts/install.sh

@ -2,6 +2,43 @@
set -euo pipefail set -euo pipefail
# Setting this to `1` skips prompts and always uses the deault option
SKIP_ASK_PROMPTS=0
# Helper for "ask [Y/n]" and "ask [y/N]"
ask() {
yn="$1"
shift
case "$yn" in
0) options="[Y/n]" ;;
1) options="[y/N]" ;;
*)
echo "FATAL: ask() got invalid argument."
exit 2
;;
esac
if [ "$SKIP_ASK_PROMPTS" = "0" ]; then
echo
# We are using echo -e to allow multiline messages
echo -en "$@"
printf " %s\n" "$options"
read reply
else
reply=""
fi
case "$reply" in
y*|Y*) return 0 ;;
n*|N*) return 1 ;;
*) return "$yn" ;;
esac
}
ask_Yn() {
ask 0 "$@"
}
ask_yN() {
ask 1 "$@"
}
echo echo
echo "Checking your system ..." echo "Checking your system ..."
@ -15,7 +52,7 @@ fi
echo " * Login shell: $login_shell - OK" echo " * Login shell: $login_shell - OK"
# check like we are not running bash # check like if we are not running bash
bash_version=$(bash -c 'echo ${BASH_VERSION}') bash_version=$(bash -c 'echo ${BASH_VERSION}')
bash_version_major=$(bash -c 'echo ${BASH_VERSINFO[0]}') bash_version_major=$(bash -c 'echo ${BASH_VERSINFO[0]}')
bash_version_minor=$(bash -c 'echo ${BASH_VERSINFO[1]}') bash_version_minor=$(bash -c 'echo ${BASH_VERSINFO[1]}')
@ -88,10 +125,16 @@ else
fi fi
fi fi
# echo echo
# echo "Continue with installation? (Any key to CONTINUE / Ctrl+C to ABORT)" echo "This installations has two modes:"
# # shellcheck disable=2034 echo " * Automatic - no question asked - RECOMMENDED"
# read -r x echo " * Guided - prompts to give you more control - useful if you have heavily customized shell configuration"
if ask_Yn ">>> Would you like to use the AUTOMATIC install mode?"; then
SKIP_ASK_PROMPTS=1
echo "Using automatic install mode ..."
else
echo "Using guided install mode ..."
fi
echo echo
echo "Creating directories ..." echo "Creating directories ..."
@ -128,7 +171,6 @@ update_config() {
fi fi
} }
# Do not overwrite config if it exists # Do not overwrite config if it exists
if [ ! -f ~/.config/resh.toml ]; then if [ ! -f ~/.config/resh.toml ]; then
echo "Copying config file ..." echo "Copying config file ..."
@ -139,7 +181,7 @@ if [ ! -f ~/.config/resh.toml ]; then
# HINT: check which version are we updating FROM and make changes to config based on that # HINT: check which version are we updating FROM and make changes to config based on that
fi fi
echo "Generating completions ..." echo "Generating shell completions ..."
bin/resh-control completion bash > ~/.resh/bash_completion.d/_reshctl bin/resh-control completion bash > ~/.resh/bash_completion.d/_reshctl
bin/resh-control completion zsh > ~/.resh/zsh_completion.d/_reshctl bin/resh-control completion zsh > ~/.resh/zsh_completion.d/_reshctl
@ -152,22 +194,124 @@ cp -fr data/sanitizer ~/.resh/sanitizer_data
# backward compatibility: We have a new location for resh history file # backward compatibility: We have a new location for resh history file
[ ! -f ~/.resh/history.json ] || mv ~/.resh/history.json ~/.resh_history.json [ ! -f ~/.resh/history.json ] || mv ~/.resh/history.json ~/.resh_history.json
echo "Finishing up ..." echo "Adding RESH to shell rc files ..."
# Adding resh shellrc to .bashrc ...
if [ ! -f ~/.bashrc ]; then setup_bashrc() {
# Creating .bashrc ...
if [ ! -f ~/.bashrc ]; then
ask_Yn \
"It looks like there is no '~/.bashrc'." \
"RESH must be sourced when your shell starts otherwise it won't work." \
">>> Create '~/.bashrc'?"
if [ "$?" = "0" ]; then
echo "Creating '~/.bashrc' ..."
touch ~/.bashrc touch ~/.bashrc
fi else
grep -q '[[ -f ~/.resh/shellrc ]] && source ~/.resh/shellrc' ~/.bashrc ||\ return 1
fi
fi
# Adding resh shellrc to .bashrc ...
if ! grep -q '[[ -f ~/.resh/shellrc ]] && source ~/.resh/shellrc' ~/.bashrc; then
ask_Yn \
"It looks like there is no '[[ -f ~/.resh/shellrc ]] && source ~/.resh/shelrc' directive in your '~/.bashrc'." \
"\nRESH must be sourced when your shell starts otherwise it won't work." \
"\n>>> Add source directive to '~/.bashrc'?"
if [ "$?" = "0" ]; then
echo "Adding RESH source directive to '~/.bashrc' ..."
echo -e '\n[[ -f ~/.resh/shellrc ]] && source ~/.resh/shellrc # this line was added by RESH (Rich Enchanced Shell History)' >> ~/.bashrc echo -e '\n[[ -f ~/.resh/shellrc ]] && source ~/.resh/shellrc # this line was added by RESH (Rich Enchanced Shell History)' >> ~/.bashrc
# Adding bash-preexec to .bashrc ... else
grep -q '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' ~/.bashrc ||\ return 1
fi
fi
# Adding bash-preexec to .bashrc ...
if ! grep -q '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' ~/.bashrc; then
ask_Yn \
"It looks like there is no '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' directive in your '~/.bashrc'." \
"\nBash-preexec must be sourced when your shell starts otherwise RESH won't work." \
"\n>>> Add bash-preexec source directive to '~/.bashrc'?"
if [ "$?" = "0" ]; then
echo "Adding bash-preexec source directive to '~/.bashrc' ..."
echo -e '\n[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh # this line was added by RESH (Rich Enchanced Shell History)' >> ~/.bashrc echo -e '\n[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh # this line was added by RESH (Rich Enchanced Shell History)' >> ~/.bashrc
# Adding resh shellrc to .zshrc ... else
if [ -f ~/.zshrc ]; then return 1
grep -q '[ -f ~/.resh/shellrc ] && source ~/.resh/shellrc' ~/.zshrc ||\ fi
echo -e '\n[ -f ~/.resh/shellrc ] && source ~/.resh/shellrc # this line was added by RESH (Rich Enchanced Shell History)' >> ~/.zshrc fi
}
setup_zshrc() {
# Creating .zshrc ...
if [ ! -f ~/.zshrc ]; then
echo "There is no '~/.zshrc' - skipping zsh setup. (This is fine if you don't use zsh.)"
return 0
fi
# Adding resh shellrc to .zshrc ...
if ! grep -q '[[ -f ~/.resh/shellrc ]] && source ~/.resh/shellrc' ~/.zshrc; then
ask_Yn \
"It looks like there is no '[[ -f ~/.resh/shellrc ]] && source ~/.resh/shellrc' directive in your '~/.zshrc'." \
"\nRESH must be sourced when your shell starts otherwise it won't work." \
"\n>>> Add source directive to '~/.zshrc'?"
if [ "$?" = "0" ]; then
echo "Adding RESH source directive to '~/.zshrc' ..."
echo -e '\n[[ -f ~/.resh/shellrc ]] && source ~/.resh/shellrc # this line was added by RESH (Rich Enchanced Shell History)' >> ~/.zshrc
else
return 1
fi
fi
}
bash_setup_info() {
echo
echo "WARNING: Shell config setup didn't complete for BASH! (You probably answered 'no' somewhere.)"
echo
echo "It is likely that you will need to modify your bash startup scripts to make RESH work in bash."
echo "Consider rerunning the installation if you do not want to modify your shell configs yourself."
echo
echo "Instructions for manual config setup for BASH:"
echo " 1) Add following lines to the end of your bash startup file:"
echo
echo " [[ -f ~/.resh/shellrc ]] && source ~/.resh/shellrc # enable RESH"
echo " [[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh # enable bash-preexec (required by RESH)"
echo
echo " 2) Make sure that you have the right config - '~/.bashrc' is usually the right one."
echo " 3) Make sure that you added the lines to the *end* of the file."
echo " 4) Make sure that you added the lines in the correct order - bash-preexec needs to come last."
echo
echo "Press any key to continue ..."
read -n 1 x
echo
echo
}
zsh_setup_info() {
echo
echo "WARNING: Shell config setup didn't complete for ZSH! (You probably answered 'no' somewhere.)"
echo
echo "It is likely that you will need to modify your zsh startup scripts to make RESH work in zsh."
echo "Consider rerunning the installation if you do not want to modify your shell configs yourself."
echo
echo "Instructions for manual config setup for ZSH:"
echo " 1) Add following line to the end of your zsh startup file:"
echo
echo " [[ -f ~/.resh/shellrc ]] && source ~/.resh/shellrc # enable RESH"
echo
echo " 2) Make sure that you have the right config - '~/.zshrc' is usually the right one."
echo " 3) Make sure that you added the line to the *end* of the file."
echo
echo "Press any key to continue ..."
read -n 1 x
echo
echo
}
if ! setup_bashrc; then
bash_setup_info
fi
if ! setup_zshrc; then
zsh_setup_info
fi fi
echo "Finishing up ..."
# Deleting zsh completion cache - for future use # Deleting zsh completion cache - for future use
# [ ! -e ~/.zcompdump ] || rm ~/.zcompdump # [ ! -e ~/.zcompdump ] || rm ~/.zcompdump
@ -216,7 +360,7 @@ RESH SEARCH APPLICATION = Redesigned reverse search that actually works
Host, directories, git remote, and exit status is used to display relevant results first. Host, directories, git remote, and exit status is used to display relevant results first.
At first, the search application will use the standard shell history without context. At first, the search application will use the standard shell history without context.
All history recorded from now on will have context which will by the RESH SEARCH app. All history recorded from now on will have context which will be used by the RESH SEARCH app.
Enable/disable Ctrl+R binding using reshctl command: Enable/disable Ctrl+R binding using reshctl command:
$ reshctl enable ctrl_r_binding $ reshctl enable ctrl_r_binding

Loading…
Cancel
Save