From 27e3cf69bcf2e937d351926250bdfb19292a9fd4 Mon Sep 17 00:00:00 2001 From: Akianonymus Date: Sat, 3 Jul 2021 09:43:42 +0530 Subject: [PATCH] install.sh: Fix all shellcheck warnings | Misc improvements * modify sed command to work in both gnu sed and mac os sed https://stackoverflow.com/a/4247319 * use printf everywhere for more compatibility * add some error checking --- install.sh | 75 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 28 deletions(-) diff --git a/install.sh b/install.sh index 0fc6888..9784620 100755 --- a/install.sh +++ b/install.sh @@ -1,55 +1,74 @@ #!/bin/sh -get_platform() { - case "$(uname -s)" in - Linux*) platform=Linux ;; - Darwin*) platform=Mac ;; - *) platform="UNKNOWN:${unameOut}" ;; - esac - echo $platform +# check if git command is installed +command -v git > /dev/null || { + printf "Install git before proceeding\n" + exit 1 } -echo "installing packer" +printf "%s\n" "Installing packer" if [ -d ~/.local/share/nvim/site/pack/packer ]; then - echo "Clearning previous packer installs" + printf "%s\n" "Clearning previous packer installs" rm -rf ~/.local/share/nvim/site/pack fi -echo "\n=> Installing packer" -git clone https://github.com/wbthomason/packer.nvim \ - ~/.local/share/nvim/site/pack/packer/start/packer.nvim -echo "=> packer installed!" +printf "\n%s\n" "=> Cloning packer.." +if git clone https://github.com/wbthomason/packer.nvim \ + ~/.local/share/nvim/site/pack/packer/start/packer.nvim; then + printf "%s\n" "=> Packer installed!" +else + printf "Error: Couldn't clone packer\n" + exit 1 +fi -echo "Linking config" -echo "old nvim config will be changed to nvim.bak if exists! :0" +printf "%s\n" "Linking config" +printf "%s\n" "Old nvim config will be changed to nvim.bak if exists! :0" # copying config if [ -d ~/.config/nvim ]; then - echo "Nvim Directory exists" - echo "Changing nvim to nvim.bak" + printf "%s\n" "Nvim Directory exists" + printf "%s\n" "Changing nvim to nvim.bak" mv ~/.config/nvim/ ~/.config/nvim.bak/ - echo "Creating new nvim directory" + printf "%s\n" "Creating new nvim directory" mkdir -p ~/.config/nvim else - echo "Nvim Config doesn't exist so creating one" + printf "%s\n" "Nvim Config doesn't exist so creating one" mkdir -p ~/.config/nvim/ fi -cp -r init.lua ~/.config/nvim/ && cp -r lua ~/.config/nvim/ +{ cp -r init.lua ~/.config/nvim/ && cp -r lua ~/.config/nvim/ ;} || { + printf "Error: Couldn't copy nvim config\n" + exit 1 +} # change shell in nvim config -read -p "which shell do you use?: " shellname -echo "$shellname" +_CURRENT_SHELL="${SHELL##*/}" +printf "%s\n: " "Which shell do you want to use ? [ Enter nothing for current shell ( $_CURRENT_SHELL ) ]" +read -r shellname +shellname="${shellname:-${_CURRENT_SHELL}}" +printf "%s\n" "$shellname" -if [ "$(get_platform)" = "Mac" ]; then - gsed -i "s/bash/$shellname/g" ~/.config/nvim/lua/mappings.lua +# don't try to do any changes if given shellname is same as bash +if ! [ bash = "$shellname" ]; then + # Reference: https://stackoverflow.com/a/4247319 + if "$(command -v sed)" -i'.bak' -e "s/bash/$shellname/g" ~/.config/nvim/lua/mappings.lua; then + printf "\n%s\n" "=> Shell changed to $shellname on nvim successfully!" + else + printf "\n%s\n" "Cannot edit with sed, edit ~/.config/nvim/lua/mappings.lua manually to replace bash with $shellname." + fi + rm -f ~/.config/nvim/lua/mappings.lua.bak # delete backup file created by sed else - sed -i "s/bash/$shellname/g" ~/.config/nvim/lua/mappings.lua + printf "\n%s\n" "=> Shell changed to $shellname on nvim successfully!" fi -echo "\n=> shell changed to $shellname on nvim successfully!" -echo "\n=> neovim will open with some errors , just press enter" && sleep 1 +printf "\n%s\n" "=> Neovim will open with some errors, just press enter" && sleep 1 # install all plugins + compile them -nvim +PackerSync +if _NVIM="$(command -v nvim)"; then + "${_NVIM}" +PackerSync +else + printf "Error: Neovim is not installed, install Neovim >= 5.x and then run the below command\n" + printf " nvim +PackerSync\n" + exit 1 +fi