chore(bootstrap): optimize shell-scripts for robustness

This commit is contained in:
js0ny 2025-02-27 03:02:55 +00:00
parent 42b83d4696
commit 2c014e281f
13 changed files with 441 additions and 184 deletions

View file

@ -0,0 +1,232 @@
#!/usr/bin/env bash
# Adds better error handling and safety features
# shellcheck disable=SC2016
# TODO: UNTESTED
set -e # Exit immediately if a command exits with a non-zero status
set -u # Treat unset variables as an error
# Create temporary working directory
TEMP_DIR="${HOME}/.tmp/catppuccin-install"
mkdir -p "${TEMP_DIR}"
# Create config directories
mkdir -p "${HOME}/.config/tmux/plugins"
mkdir -p "${HOME}/.config/yazi"
mkdir -p "${HOME}/.config/btop/themes"
mkdir -p "${HOME}/.config/git"
mkdir -p "${HOME}/.config/lsd"
mkdir -p "${HOME}/.local/share/mc/skins"
mkdir -p "${HOME}/.config/fish/themes"
mkdir -p "${HOME}/.local/share/fcitx5/themes"
# Function for downloading files
download_file() {
local url="$1"
local output_path="$2"
local output_dir
# Extract directory from output path
output_dir=$(dirname "$output_path")
# Create directory if it doesn't exist
if [ ! -d "$output_dir" ]; then
mkdir -p "$output_dir"
fi
# Print status message
echo "Downloading: $url"
echo " to: $output_path"
# Download with curl (using -L to follow redirects)
if ! curl -L -s --fail "$url" -o "$output_path"; then
echo "Error: Failed to download $url" >&2
return 1
fi
# Verify file was downloaded
if [ ! -f "$output_path" ]; then
echo "Error: File was not created at $output_path" >&2
return 1
fi
echo "Download successful."
return 0
}
# Function to check if command exists
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# Install Bat themes
if command_exists bat; then
BAT_CONFIG_DIR=$(bat --config-dir 2>/dev/null || echo "${HOME}/.config/bat")
mkdir -p "${BAT_CONFIG_DIR}/themes"
echo "Installing Bat themes..."
THEMES=("Latte" "Frappe" "Macchiato" "Mocha")
for theme in "${THEMES[@]}"; do
download_file "https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20${theme}.tmTheme" \
"${BAT_CONFIG_DIR}/themes/Catppuccin ${theme}.tmTheme"
done
echo "Rebuilding Bat cache..."
bat cache --build || echo "WARNING: Failed to rebuild Bat cache" >&2
else
echo "Bat not found, skipping Bat themes installation" >&2
fi
# Install Tmux plugin
if command_exists tmux; then
echo "Installing Tmux plugin..."
TMUX_PLUGIN_DIR="${HOME}/.config/tmux/plugins/catppuccin"
rm -rf "${TMUX_PLUGIN_DIR}"
mkdir -p "${TMUX_PLUGIN_DIR}"
if command_exists git; then
if ! git clone -b v2.1.2 --depth=1 https://github.com/catppuccin/tmux.git "${TMUX_PLUGIN_DIR}/tmux" 2>/dev/null; then
echo "WARNING: Failed to clone Tmux plugin repository" >&2
fi
else
echo "Git not found, skipping Tmux plugin installation" >&2
fi
else
echo "Tmux not found, skipping Tmux plugin installation" >&2
fi
# Install Yazi theme
if command_exists yazi; then
echo "Installing Yazi theme..."
download_file "https://raw.githubusercontent.com/catppuccin/yazi/main/themes/mocha/catppuccin-mocha-lavender.toml" \
"${HOME}/.config/yazi/theme.toml"
else
echo "Yazi not found, skipping Yazi theme installation" >&2
fi
# Install BTopa themes
if command_exists btop; then
echo "Installing BTopa themes..."
download_file "https://raw.githubusercontent.com/catppuccin/btop/main/themes/catppuccin_mocha.theme" \
"${HOME}/.config/btop/themes/catppuccin_mocha.theme"
download_file "https://raw.githubusercontent.com/catppuccin/btop/main/themes/catppuccin_latte.theme" \
"${HOME}/.config/btop/themes/catppuccin_latte.theme"
else
echo "BTopa not found, skipping BTopa themes installation" >&2
fi
# Install Delta config
echo "Installing Delta config..."
download_file "https://raw.githubusercontent.com/catppuccin/delta/main/catppuccin.gitconfig" \
"${HOME}/.config/git/catppuccin-delta.gitconfig"
# Configure FZF
if command_exists fzf; then
echo "Configuring FZF..."
# Check shell type to determine how to set environment variables
if [ -n "${FISH_VERSION:-}" ] || command_exists fish; then
# For Fish shell
fish -c 'set -U FZF_DEFAULT_OPTS "--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc --color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 --color=selected-bg:#45475a --multi"' ||
echo "WARNING: Failed to set FZF options for Fish shell" >&2
else
# For Bash/Zsh - add to both .bashrc and .zshrc if they exist
FZF_CONFIG="export FZF_DEFAULT_OPTS=\"--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 --color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc --color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 --color=selected-bg:#45475a --multi\""
# Add to .bashrc if it exists
if [ -f "${HOME}/.bashrc" ]; then
if ! grep -q "FZF_DEFAULT_OPTS.*catppuccin" "${HOME}/.bashrc"; then
echo "${FZF_CONFIG}" >>"${HOME}/.bashrc"
echo "Added FZF configuration to .bashrc"
fi
fi
# Add to .zshrc if it exists
if [ -f "${HOME}/.zshrc" ]; then
if ! grep -q "FZF_DEFAULT_OPTS.*catppuccin" "${HOME}/.zshrc"; then
echo "${FZF_CONFIG}" >>"${HOME}/.zshrc"
echo "Added FZF configuration to .zshrc"
fi
fi
fi
else
echo "FZF not found, skipping FZF configuration" >&2
fi
# Install LSD themes
if command_exists lsd; then
echo "Installing LSD themes..."
download_file "https://raw.githubusercontent.com/catppuccin/lsd/main/themes/catppuccin-mocha/colors.yaml" \
"${HOME}/.config/lsd/colors.yaml"
download_file "https://raw.githubusercontent.com/catppuccin/lsd/main/themes/catppuccin-latte/colors.yaml" \
"${HOME}/.config/lsd/colors-light.yaml"
else
echo "LSD not found, skipping LSD themes installation" >&2
fi
# Install Midnight Commander skin
echo "Installing Midnight Commander skin..."
download_file "https://raw.githubusercontent.com/catppuccin/mc/main/catppuccin.ini" \
"${HOME}/.local/share/mc/skins/catppuccin.ini"
# Print MC configuration hint
echo "Note: To use the Midnight Commander theme:"
echo " - Change or add skin=catppuccin in the [Midnight-Commander] section inside ~/.config/mc/ini"
echo " - OR choose the skin inside Midnight Commander through F9 > Options > Appearance"
echo " - Save setup through F9 > Options > Save setup"
# Install PowerShell module
if command_exists pwsh; then
echo "Installing PowerShell module..."
PS_MODULE_PATH=$(pwsh -C 'Write-Output $Env:PSModulePath.split(":")[0]' 2>/dev/null)
if [ -n "${PS_MODULE_PATH}" ]; then
if command_exists git; then
if ! git clone --depth=1 https://github.com/catppuccin/powershell.git "${PS_MODULE_PATH}/Catppuccin" 2>/dev/null; then
echo "WARNING: Failed to clone PowerShell module repository" >&2
fi
else
echo "Git not found, skipping PowerShell module installation" >&2
fi
else
echo "PowerShell module path not found, skipping PowerShell module installation" >&2
fi
else
echo "PowerShell not found, skipping PowerShell module installation" >&2
fi
# Install Fish themes
if command_exists fish; then
echo "Installing Fish themes..."
download_file "https://raw.githubusercontent.com/catppuccin/fish/main/themes/Catppuccin%20Mocha.theme" \
"${HOME}/.config/fish/themes/Catppuccin Mocha.theme"
download_file "https://raw.githubusercontent.com/catppuccin/fish/main/themes/Catppuccin%20Latte.theme" \
"${HOME}/.config/fish/themes/Catppuccin Latte.theme"
else
echo "Fish not found, skipping Fish themes installation" >&2
fi
# Install Fcitx5 themes
if command_exists fcitx5; then
echo "Installing Fcitx5 themes..."
rm -rf "${TEMP_DIR}/fcitx5"
if command_exists git; then
if git clone --depth=1 https://github.com/catppuccin/fcitx5.git "${TEMP_DIR}/fcitx5" 2>/dev/null; then
cp -r "${TEMP_DIR}/fcitx5/src/"* "${HOME}/.local/share/fcitx5/themes/"
else
echo "WARNING: Failed to clone Fcitx5 repository" >&2
fi
else
echo "Git not found, skipping Fcitx5 themes installation" >&2
fi
else
echo "Fcitx5 not found, skipping Fcitx5 themes installation" >&2
fi
# Clean up temporary directory
rm -rf "${TEMP_DIR}"
echo "Catppuccin themes installation completed!"

View file

@ -0,0 +1,43 @@
mkdir -p ~/.tmp
# Bat
mkdir -p "$(bat --config-dir)/themes"
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Latte.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Frappe.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Macchiato.tmTheme
wget -P "$(bat --config-dir)/themes" https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Mocha.tmTheme
bat cache --build
# Tmux
mkdir -p ~/.config/tmux/plugins/catppuccin:w
git clone -b v2.1.2 https://github.com/catppuccin/tmux.git ~/.config/tmux/plugins/catppuccin/tmux
# Yazi
curl https://raw.githubusercontent.com/catppuccin/yazi/refs/heads/main/themes/mocha/catppuccin-mocha-lavender.toml -o ~/.config/yazi/theme.toml
# BTop
curl https://raw.githubusercontent.com/catppuccin/btop/refs/heads/main/themes/catppuccin_mocha.theme -o ~/.config/btop/themes/catppuccin_mocha.theme
curl https://raw.githubusercontent.com/catppuccin/btop/refs/heads/main/themes/catppuccin_latte.theme -o ~/.config/btop/themes/catppuccin_latte.theme
# Delta
curl https://raw.githubusercontent.com/catppuccin/delta/refs/heads/main/catppuccin.gitconfig -o ~/.config/git/catppuccin-delta.gitconfig
# Fzf
set -Ux FZF_DEFAULT_OPTS "\
--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
--color=marker:#b4befe,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8 \
--color=selected-bg:#45475a \
--multi"
# LsD
curl https://raw.githubusercontent.com/catppuccin/lsd/refs/heads/main/themes/catppuccin-mocha/colors.yaml -o ~/.config/lsd/colors.yaml
curl https://raw.githubusercontent.com/catppuccin/lsd/refs/heads/main/themes/catppuccin-latte/colors.yaml -o ~/.config/lsd/colors-light.yaml
# Midnight Commander
# Change or add skin=catppuccin in the [Midnight-Commander] section inside ~/.config/mc/ini OR Choose the skin inside Midnight Commander through F9>Options>Appearance and Save setup through F9>Options/Save setup
mkdir -p $HOME/.local/share/mc/skins
curl https://raw.githubusercontent.com/catppuccin/mc/refs/heads/main/catppuccin.ini -o $HOME/.local/share/mc/skins/catppuccin.ini
# PowerShell
pwsh -C 'git clone https://github.com/catppuccin/powershell.git (Join-Path $Env:PSModulePath.split(":")[0] Catppuccin)'
# Fish
mkdir -p ~/.config/fish/themes
curl https://raw.githubusercontent.com/catppuccin/fish/refs/heads/main/themes/Catppuccin%20Mocha.theme -o ~/.config/fish/themes/Catppuccin\ Mocha.theme
curl https://raw.githubusercontent.com/catppuccin/fish/refs/heads/main/themes/Catppuccin%20Latte.theme -o ~/.config/fish/themes/Catppuccin\ Latte.theme
# fcitx5
git clone https://github.com/catppuccin/fcitx5.git ~/.tmp/fcitx5
cd ~/.tmp/fcitx5
mkdir -p ~/.local/share/fcitx5/themes
cp -r ./src/* ~/.local/share/fcitx5/themes

View file

@ -1,7 +1,7 @@
echo "[INFO] Installing Rime"
git clone --depth 1 https://github.com/js0ny/rime_wanxiang_pro.git ~/Library/Rime
cd ~/Library/Rime
cd ~/Library/Rime || exit
just init
# just install_rime

View file

@ -16,9 +16,9 @@ XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
echo "[INFO] Setting up some local directories"
test -d $XDG_CACHE_HOME || mkdir -p $XDG_CACHE_HOME
test -d $XDG_DATA_HOME || mkdir -p $XDG_DATA_HOME
test -d $XDG_STATE_HOME || mkdir -p $XDG_STATE_HOME
test -d "$XDG_CACHE_HOME" || mkdir -p "$XDG_CACHE_HOME"
test -d "$XDG_DATA_HOME" || mkdir -p "$XDG_DATA_HOME"
test -d "$XDG_STATE_HOME" || mkdir -p "$XDG_STATE_HOME"
test -d ~/.local/state/zsh || mkdir -p ~/.local/state/zsh
# echo "[INFO] Setting up system-wide zsh configuration"
@ -29,74 +29,74 @@ test -d ~/.local/state/zsh || mkdir -p ~/.local/state/zsh
declare -A linkDots
linkDots=(
["$DOTFILES/common/condarc.yaml"]="$XDG_CONFIG_HOME/conda/.condarc"
# ["$DOTFILES/common/gitconfig"]="$XDG_CONFIG_HOME/git/config"
["$DOTFILES/common/glow.yaml"]="$HOME/.config/glow/config.yml"
["$DOTFILES/common/haskeline"]="$HOME/.haskeline"
["$DOTFILES/common/ideavimrc"]="$XDG_CONFIG_HOME/ideavim/ideavimrc"
["$DOTFILES/common/lazygit.yaml"]="$XDG_CONFIG_HOME/lazygit/config.yml"
["$DOTFILES/common/lesskey"]="$XDG_CONFIG_HOME/lesskey"
["$DOTFILES/common/npmrc"]="$NPM_CONFIG_USERCONFIG"
["$DOTFILES/common/NuGet.Config"]="$XDG_CONFIG_HOME/NuGet/NuGet.Config"
["$DOTFILES/common/pip.conf"]="$XDG_CONFIG_HOME/pip/pip.conf"
["$DOTFILES/common/starship.toml"]="$HOME/.config/starship.toml"
["$DOTFILES/common/tmux.conf"]="$XDG_CONFIG_HOME/tmux/tmux.conf"
["$DOTFILES/common/vimrc"]="$XDG_CONFIG_HOME/vim/vimrc"
["$DOTFILES/common/zellij.config.kdl"]="$HOME/.config/zellij/config.kdl"
# ["$DOTFILES/tools/emacs.d"]="$HOME/.emacs.d"
["$DOTFILES/tools/doom"]="$HOME/.config/doom"
["$DOTFILES/tools/fish"]="$HOME/.config/fish"
["$DOTFILES/tools/ipython"]="$XDG_CONFIG_HOME/ipython"
["$DOTFILES/tools/nvim"]="$XDG_CONFIG_HOME/nvim"
["$DOTFILES/tools/yazi"]="$HOME/.config/yazi"
["$DOTFILES/tools/zsh/zshrc"]="$ZDOTDIR/.zshrc"
["$DOTFILES/tools/zsh/zshenv"]="$ZDOTDIR/.zshenv"
["$DOTFILES/platforms/mac/pwshProfile.ps1"]="$HOME/.config/powershell/Microsoft.PowerShell_profile.ps1"
["$DOTFILES/common/condarc.yaml"]="$XDG_CONFIG_HOME/conda/.condarc"
# ["$DOTFILES/common/gitconfig"]="$XDG_CONFIG_HOME/git/config"
["$DOTFILES/common/glow.yaml"]="$HOME/.config/glow/config.yml"
["$DOTFILES/common/haskeline"]="$HOME/.haskeline"
["$DOTFILES/common/ideavimrc"]="$XDG_CONFIG_HOME/ideavim/ideavimrc"
["$DOTFILES/common/lazygit.yaml"]="$XDG_CONFIG_HOME/lazygit/config.yml"
["$DOTFILES/common/lesskey"]="$XDG_CONFIG_HOME/lesskey"
["$DOTFILES/common/npmrc"]="$NPM_CONFIG_USERCONFIG"
["$DOTFILES/common/NuGet.Config"]="$XDG_CONFIG_HOME/NuGet/NuGet.Config"
["$DOTFILES/common/pip.conf"]="$XDG_CONFIG_HOME/pip/pip.conf"
["$DOTFILES/common/starship.toml"]="$HOME/.config/starship.toml"
["$DOTFILES/common/tmux.conf"]="$XDG_CONFIG_HOME/tmux/tmux.conf"
["$DOTFILES/common/vimrc"]="$XDG_CONFIG_HOME/vim/vimrc"
["$DOTFILES/common/zellij.config.kdl"]="$HOME/.config/zellij/config.kdl"
# ["$DOTFILES/tools/emacs.d"]="$HOME/.emacs.d"
["$DOTFILES/tools/doom"]="$HOME/.config/doom"
["$DOTFILES/tools/fish"]="$HOME/.config/fish"
["$DOTFILES/tools/ipython"]="$XDG_CONFIG_HOME/ipython"
["$DOTFILES/tools/nvim"]="$XDG_CONFIG_HOME/nvim"
["$DOTFILES/tools/yazi"]="$HOME/.config/yazi"
["$DOTFILES/tools/zsh/zshrc"]="$ZDOTDIR/.zshrc"
["$DOTFILES/tools/zsh/zshenv"]="$ZDOTDIR/.zshenv"
["$DOTFILES/platforms/mac/pwshProfile.ps1"]="$HOME/.config/powershell/Microsoft.PowerShell_profile.ps1"
)
if [ $(uname) = "Darwin" ]; then
echo "[INFO] Running on macOS"
linkDots+=(
["$DOTFILES/platforms/mac/karabiner"]="$HOME/.config/karabiner"
["$DOTFILES/platforms/mac/skhdrc"]="$XDG_CONFIG_HOME/skhd/skhdrc"
["$DOTFILES/platforms/mac/sketchybarrc"]="$XDG_CONFIG_HOME/sketchybar/sketchybarrc"
["$DOTFILES/platforms/mac/yabairc"]="$XDG_CONFIG_HOME/yabai/yabairc"
["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm"
["$DOTFILES/tools/zed"]="$HOME/.config/zed"
["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek"
)
else
echo "[INFO] Running on Linux"
linkDots+=(
["$DOTFILES/common/inputrc"]="$HOME/.inputrc"
)
# WSL1 : Microsoft
# WSL2 : microsoft
# if [ "$(uname -r)" = *icrosoft* ]; then
# echo "[INFO] Running on WSL"
# : # NOP
if [ "$GUI_SETUP" -eq 1 ]; then
echo "[INFO] Setting up Linux GUI Applications"
echo "[INFO] Running on macOS"
linkDots+=(
["$DOTFILES/platforms/linux/awesome"]="$HOME/.config/awesome"
["$DOTFILES/platforms/linux/hypr"]="$HOME/.config/hypr"
["$DOTFILES/platforms/linux/waybar"]="$HOME/.config/waybar"
["$DOTFILES/platforms/linux/wlogout"]="$HOME/.config/wlogout"
["$DOTFILES/platforms/linux/mako-config"]="$HOME/.config/mako/config"
["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm"
["$DOTFILES/tools/zed"]="$HOME/.config/zed"
["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek"
["$DOTFILES/platforms/mac/karabiner"]="$HOME/.config/karabiner"
["$DOTFILES/platforms/mac/skhdrc"]="$XDG_CONFIG_HOME/skhd/skhdrc"
["$DOTFILES/platforms/mac/sketchybarrc"]="$XDG_CONFIG_HOME/sketchybar/sketchybarrc"
["$DOTFILES/platforms/mac/yabairc"]="$XDG_CONFIG_HOME/yabai/yabairc"
["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm"
["$DOTFILES/tools/zed"]="$HOME/.config/zed"
["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek"
)
for kde in "$DOTFILES/platforms/linux/kde/"*; do
linkDots+=["$kde"]="$HOME/.config/kde/$(basename $kde)"
# echo "Linking $kde to $HOME/.config/kde/$(basename $kde)"
done
if [ "$WHEEL" -eq 1 ]; then
echo "[INFO] Setting up system environment variables"
echo "[ACTION] Elevation required!"
sudo cp "$DOTFILES/platforms/linux/etc/environment" "/etc/environment"
else
echo "[INFO] Running on Linux"
linkDots+=(
["$DOTFILES/common/inputrc"]="$HOME/.inputrc"
)
# WSL1 : Microsoft
# WSL2 : microsoft
# if [ "$(uname -r)" = *icrosoft* ]; then
# echo "[INFO] Running on WSL"
# : # NOP
if [ "$GUI_SETUP" -eq 1 ]; then
echo "[INFO] Setting up Linux GUI Applications"
linkDots+=(
["$DOTFILES/platforms/linux/awesome"]="$HOME/.config/awesome"
["$DOTFILES/platforms/linux/hypr"]="$HOME/.config/hypr"
["$DOTFILES/platforms/linux/waybar"]="$HOME/.config/waybar"
["$DOTFILES/platforms/linux/wlogout"]="$HOME/.config/wlogout"
["$DOTFILES/platforms/linux/mako-config"]="$HOME/.config/mako/config"
["$DOTFILES/tools/wezterm"]="$HOME/.config/wezterm"
["$DOTFILES/tools/zed"]="$HOME/.config/zed"
["$DOTFILES/tools/sioyek"]="$HOME/.config/sioyek"
)
for kde in "$DOTFILES/platforms/linux/kde/"*; do
linkDots+=["$kde"]="$HOME/.config/kde/$(basename "$kde")"
# echo "Linking $kde to $HOME/.config/kde/$(basename $kde)"
done
if [ "$WHEEL" -eq 1 ]; then
echo "[INFO] Setting up system environment variables"
echo "[ACTION] Elevation required!"
sudo cp "$DOTFILES/platforms/linux/etc/environment" "/etc/environment"
fi
fi
fi
fi
echo "[INFO] Copying example files"

View file

@ -8,21 +8,21 @@ echo "[ACTION] Press any key to proceed"
read -n 1
if [ "$WHEEL" -eq 1 ]; then
echo "[INFO] Setting up system-wide zsh configuration"
echo "[ACTION] Elevation required"
test -f "/etc/zsh/zshenv" && sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zsh/zshenv"
test -f "/etc/zshenv" && sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zshenv"
if [ $(uname) = "Darwin" ]; then
sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zshenv"
fi
echo "[INFO] Setting up system-wide zsh configuration"
echo "[ACTION] Elevation required"
test -f "/etc/zsh/zshenv" && sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zsh/zshenv"
test -f "/etc/zshenv" && sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zshenv"
if [ "$(uname)" = "Darwin" ]; then
sudo cp "$DOTFILES/tools/zsh/global.zshenv" "/etc/zshenv"
fi
else
echo "[INFO] Setting up user zsh configuration"
# A fallback case to set $ZDOTDIR in ~/.zshenv if the user cannot access global zshenv
ln -sf "$DOTFILES/tools/zsh/zshenv" "$HOME/.zshenv"
echo "[INFO] Setting up user zsh configuration"
# A fallback case to set $ZDOTDIR in ~/.zshenv if the user cannot access global zshenv
ln -sf "$DOTFILES/tools/zsh/zshenv" "$HOME/.zshenv"
fi
echo "[INFO] Installing zsh plugins"
test -d $ZDOTDIR/plugins/zsh-autosuggestions || git clone --depth 1 https://github.com/zsh-users/zsh-autosuggestions.git $ZDOTDIR/plugins/zsh-autosuggestions
test -d $ZDOTDIR/plugins/zsh-syntax-highlighting || git clone --depth 1 https://github.com/zsh-users/zsh-syntax-highlighting.git $ZDOTDIR/plugins/zsh-syntax-highlighting
test -d $ZDOTDIR/plugins/zsh-history-substring-search || git clone --depth 1 https://github.com/zsh-users/zsh-history-substring-search.git $ZDOTDIR/plugins/zsh-history-substring-search
test -d $ZDOTDIR/plugins/zsh-completions || git clone --depth 1 https://github.com/zsh-users/zsh-completions.git $ZDOTDIR/plugins/zsh-completions
test -d "$ZDOTDIR"/plugins/zsh-autosuggestions || git clone --depth 1 https://github.com/zsh-users/zsh-autosuggestions.git "$ZDOTDIR"/plugins/zsh-autosuggestions
test -d "$ZDOTDIR"/plugins/zsh-syntax-highlighting || git clone --depth 1 https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZDOTDIR"/plugins/zsh-syntax-highlighting
test -d "$ZDOTDIR"/plugins/zsh-history-substring-search || git clone --depth 1 https://github.com/zsh-users/zsh-history-substring-search.git "$ZDOTDIR"/plugins/zsh-history-substring-search
test -d "$ZDOTDIR"/plugins/zsh-completions || git clone --depth 1 https://github.com/zsh-users/zsh-completions.git "$ZDOTDIR"/plugins/zsh-completions