From 3a139a3563b0f8c141ae9d9acb3720b77d080e31 Mon Sep 17 00:00:00 2001 From: alvinlollo Date: Wed, 21 Jan 2026 16:19:05 -0800 Subject: [PATCH] Run local scripts first before using from github --- LazyVim.sh | 3 ++- installbeta.sh | 52 +++++++++++++++++++++++++++++++++++++------------- zsh.sh | 36 ++++++++++++++++++++++++++++------ 3 files changed, 71 insertions(+), 20 deletions(-) diff --git a/LazyVim.sh b/LazyVim.sh index 7556e06..ca76b5f 100755 --- a/LazyVim.sh +++ b/LazyVim.sh @@ -2,7 +2,8 @@ if command -v pacman /dev/null; then echo "apt detected. Installing prerequisites" + sudo apt update + sudo apt full-upgrade -y sudo apt install git zsh curl wget whiptail -y fi @@ -101,36 +104,54 @@ for selection in $CHOICE; do case $clean_selection in "1") echo "Running zsh setup script..." - bash "$(curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/zsh.sh)" --skip-watermark + # Runs local script unless it does not exist or fails + if [[ -f "zsh.sh "]]; then + echo "Found local script, running..." + bash zsh.sh --skip-watermark; then + else + bash "$(curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/zsh.sh)" --skip-watermark + fi ;; "2") echo "Running LazyVim setup script..." - curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/LazyVim.sh | bash + # Runs local script unless it does not exist or fails + if [[ -f "LazyVim.sh" ]];then + echo "Found local script, running..." + bash LazyVim.sh; then + else + curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/LazyVim.sh | bash + fi ;; "3") echo "Installing Docker..." if ! command -v docker >/dev/null; then - echo "docker is NOT installed. Running installation commands..." + echo "docker is NOT installed. Installing..." curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER else sudo usermod -aG docker $USER echo "Docker is already installed." + echo "+ sleep 10" && sleep 10 fi ;; "4") echo "Installing Pacman Packages..." # Check if pacman binary is installed if command -v pacman /dev/null; then @@ -156,24 +177,29 @@ for selection in $CHOICE; do echo "Failed to clone yay repository. You can try running it manually:" echo "git clone https://aur.archlinux.org/yay.git /tmp/yay_install" echo "--------------------------------------------------------------------" - exit + exit 1 # exit with an error elif ! (cd /tmp/yay_install && makepkg -si --noconfirm); then echo "--------------------------------------------------------------------" echo "Failed to build and install yay. You can try running it manually:" echo "cd /tmp/yay_install && makepkg -si --noconfirm" echo "--------------------------------------------------------------------" - exit + exit 1 # exit with an error fi rm -rf /tmp/yay_install else echo "Yay is already installed." fi # Install yay packages - if ! curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm; then + # Runs local script unless it does no exist or fails + if [[ -f "./config/PackagesYay.txt" ]]; then + echo "Found local config" + cat ./config/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm; then + elif ! curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm; then echo "--------------------------------------------------------------------" echo "Failed to install Yay packages. You can try running it manually:" echo "curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/refs/heads/main/configs/PackagesYay.txt | yay -S --needed --save --answerclean None --answerdiff None - --noconfirm" echo "--------------------------------------------------------------------" + echo "+ sleep 10" && sleep 10 fi ;; *) diff --git a/zsh.sh b/zsh.sh index b17c06b..4d1c540 100755 --- a/zsh.sh +++ b/zsh.sh @@ -62,6 +62,9 @@ set +x # Install oh-my-zsh without entering zsh CHSH=no sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended +# Print commands +set -x + # Install Oh-My-Zsh plugins git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions @@ -73,7 +76,7 @@ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM: set +eu # Backup old config file if it exists -cp .zshrc .zshrc.backup +cp .zshrc .zshrc{,.bak} -r # Enable exit on error set -eu @@ -88,14 +91,35 @@ curl -fsSL https://raw.githubusercontent.com/alvinlollo/Single-install-script/re mkdir -p ~/.fzf/shell touch ~/.fzf/shell/key-bindings.zsh -sudo sh -c "echo $(which zsh) >> /etc/shells" - # Do not print commands set +x -echo 'Please run to change default shell: -chsh -s /bin/zsh' +# If this user's login shell is already "zsh", do not attempt to switch. +if [ "$(basename -- "$SHELL")" = "zsh" ]; then + return +fi + +if command -v chsh >/dev/null; then + echo "chsh command does not exist." + echo "Please change your shell manually" + sleep 5 && exit 0 +fi + +echo "Changing your shell to $zsh..." + +if ! sudo -k chsh -s "$zsh" "$USER"; then # -k forces password prompt + echo "Next command may fail." + chsh -s $"(which zsh)" "$USER" # run chsh normally may fail +fi + +# Check if the shell change was successful +if [ $? -ne 0 ]; then + echo "chsh command unsuccessful. Change your default shell manually:" + echo "chsh -s $"(which zsh)" $USER" +else + export SHELL="$zsh" + echo "Shell successfully changed to '$zsh'." +fi # Print commands set -x -sleep 10