mirror of
https://github.com/js0ny/dotfiles.git
synced 2025-12-21 08:43:00 +00:00
chore(bootstrap): optimize shell-scripts for robustness
This commit is contained in:
parent
42b83d4696
commit
2c014e281f
13 changed files with 441 additions and 184 deletions
|
|
@ -6,7 +6,7 @@ wget -q https://raw.githubusercontent.com/ivan-hc/AM/main/AM-INSTALLER && chmod
|
|||
|
||||
APPMAN_PATH="$HOME/.local/bin/appman"
|
||||
|
||||
if command -v $APPMAN_PATH >/dev/null 2>&1; then
|
||||
$APPMAN_PATH install wezterm
|
||||
$APPMAN_PATH install nvim
|
||||
if command -v "$APPMAN_PATH" >/dev/null 2>&1; then
|
||||
$APPMAN_PATH install wezterm
|
||||
$APPMAN_PATH install nvim
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -13,34 +13,34 @@ ELECTRON_FLAG=$DOTFILES/platforms/linux/electron-flags.conf
|
|||
# Browser Flags
|
||||
|
||||
browser_flags_path=(
|
||||
"$XDG_CONFIG_HOME/chromium-flags.conf" # Chromium
|
||||
"$XDG_CONFIG_HOME/chrome-flags.conf" # Google Chrome
|
||||
"$XDG_CONFIG_HOME/thorium-flags.conf" # Thorium
|
||||
"$XDG_CONFIG_HOME/vivaldi-flags.conf" # Vivaldi
|
||||
"$XDG_CONFIG_HOME/vivaldi-stable.conf" # Vivaldi
|
||||
"$XDG_CONFIG_HOME/chromium-flags.conf" # Chromium
|
||||
"$XDG_CONFIG_HOME/chrome-flags.conf" # Google Chrome
|
||||
"$XDG_CONFIG_HOME/thorium-flags.conf" # Thorium
|
||||
"$XDG_CONFIG_HOME/vivaldi-flags.conf" # Vivaldi
|
||||
"$XDG_CONFIG_HOME/vivaldi-stable.conf" # Vivaldi
|
||||
|
||||
)
|
||||
|
||||
electron_flags_path=(
|
||||
"$XDG_CONFIG_HOME/electron-flags.conf" # General
|
||||
"$XDG_CONFIG_HOME/code-flags.conf" # VSCode
|
||||
"$XDG_CONFIG_HOME/qq-electron-flags.conf" # Slack
|
||||
"$XDG_CONFIG_HOME/electron-flags.conf" # General
|
||||
"$XDG_CONFIG_HOME/code-flags.conf" # VSCode
|
||||
"$XDG_CONFIG_HOME/qq-electron-flags.conf" # Slack
|
||||
)
|
||||
|
||||
for path in "${browser_flags_path[@]}"; do
|
||||
if [ -f "$path" ]; then
|
||||
echo "[INFO] Found Browser Flags: $path"
|
||||
else
|
||||
echo "[INFO] Creating Browser Flags: $path"
|
||||
ln -s $BROWSER_FLAG $path
|
||||
fi
|
||||
if [ -f "$path" ]; then
|
||||
echo "[INFO] Found Browser Flags: $path"
|
||||
else
|
||||
echo "[INFO] Creating Browser Flags: $path"
|
||||
ln -s "$BROWSER_FLAG" "$path"
|
||||
fi
|
||||
done
|
||||
|
||||
for path in "${electron_flags_path[@]}"; do
|
||||
if [ -f "$path" ]; then
|
||||
echo "[INFO] Found Electron Flags: $path"
|
||||
else
|
||||
echo "[INFO] Creating Electron Flags: $path"
|
||||
ln -s $ELECTRON_FLAG $path
|
||||
fi
|
||||
if [ -f "$path" ]; then
|
||||
echo "[INFO] Found Electron Flags: $path"
|
||||
else
|
||||
echo "[INFO] Creating Electron Flags: $path"
|
||||
ln -s "$ELECTRON_FLAG" "$path"
|
||||
fi
|
||||
done
|
||||
|
|
|
|||
|
|
@ -14,28 +14,34 @@ WHEEL=0
|
|||
groups "$(whoami)" | grep -E -q '\b(sudo|wheel)\b' && WHEEL=1
|
||||
|
||||
if [ "$WHEEL" -eq 1 ]; then
|
||||
echo "[INFO] Running as sudo or wheel group"
|
||||
echo "[INFO] Running as sudo or wheel group"
|
||||
else
|
||||
echo "[INFO] Not running as sudo or wheel group"
|
||||
echo "[INFO] Not running as sudo or wheel group"
|
||||
fi
|
||||
|
||||
export WHEEL
|
||||
|
||||
GUI_SETUP=0
|
||||
|
||||
IS_WSL=0
|
||||
WINDOWS_USER=""
|
||||
PACKAGE_MANAGER=""
|
||||
|
||||
# NOTE: This is NOT a POSIX-compliant way, for POSIX-compliant way, use case/esac
|
||||
if [[ "$(uname -r)" = *Microsoft* ]]; then
|
||||
echo "[INFO] Running on WSL1 Skipping GUI setup"
|
||||
echo "[INFO] Running on WSL1 Skipping GUI setup"
|
||||
IS_WSL=1
|
||||
WINDOWS_USER="$(cmd.exe /c "echo %USERNAME%" | tr -d '\r')"
|
||||
else
|
||||
read -p "[ACTION] Do you want to setup Linux GUI? (y/N) " choice
|
||||
case "$choice" in
|
||||
read -p "[ACTION] Do you want to setup Linux GUI? (y/N) " -r choice
|
||||
case "$choice" in
|
||||
y | Y)
|
||||
GUI_SETUP=1
|
||||
;;
|
||||
GUI_SETUP=1
|
||||
;;
|
||||
*)
|
||||
echo "[INFO] Skipping GUI setup"
|
||||
;;
|
||||
esac
|
||||
echo "[INFO] Skipping GUI setup"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
export GUI_SETUP
|
||||
|
|
@ -43,103 +49,121 @@ export GUI_SETUP
|
|||
# base-devel
|
||||
|
||||
if [ "$WHEEL" -eq 1 ]; then
|
||||
echo "[INFO] Installing basic build tools"
|
||||
if command -v apt >/dev/null 2>&1; then
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
sudo pacman -Syu --noconfirm
|
||||
sudo pacman -S --noconfirm base-devel
|
||||
else
|
||||
echo "[ERROR] Unsupported package manager"
|
||||
exit 1
|
||||
fi
|
||||
echo "[INFO] Installing basic build tools"
|
||||
if command -v apt >/dev/null 2>&1; then
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential
|
||||
PACKAGE_MANAGER="apt"
|
||||
elif command -v pacman >/dev/null 2>&1; then
|
||||
sudo pacman -Syu --noconfirm
|
||||
sudo pacman -S --noconfirm base-devel
|
||||
PACKAGE_MANAGER="pacman"
|
||||
else
|
||||
echo "[ERROR] Unsupported package manager"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "[INFO] Cloning Dotfiles"
|
||||
|
||||
if [ -d "$DOTFILES" ]; then
|
||||
echo "[INFO] Dotfiles already cloned"
|
||||
echo "[INFO] Dotfiles already cloned"
|
||||
elif [ "$IS_WSL" -eq 1 ]; then
|
||||
ln -sf "/mnt/c/Users/$WINDOWS_USER/.dotfiles" "$DOTFILES"
|
||||
elif command -v git >/dev/null 2>&1; then
|
||||
git clone https://github.com/js0ny/dotfiles.git "$DOTFILES" --depth 1
|
||||
git clone https://github.com/js0ny/dotfiles.git "$DOTFILES" --depth 1
|
||||
else
|
||||
echo "[ERROR] Git is not installed"
|
||||
exit 1
|
||||
echo "[ERROR] Git is not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$WHEEL" -eq 0 ]; then
|
||||
read -p "[ACTION] Do you want to install some AppImages (by AppMan)? (y/N) " choice
|
||||
case "$choice" in
|
||||
read -p "[ACTION] Do you want to install some AppImages (by AppMan)? (y/N) " -r choice
|
||||
case "$choice" in
|
||||
y | Y)
|
||||
source "$DOTFILES/bootstrap/linux/appman.bash"
|
||||
;;
|
||||
source "$DOTFILES/bootstrap/linux/appman.bash"
|
||||
;;
|
||||
*)
|
||||
echo "[INFO] Skipping AppMan installation"
|
||||
:
|
||||
;;
|
||||
esac
|
||||
echo "[INFO] Skipping AppMan installation"
|
||||
:
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo "[INFO] Setting up symbolic links"
|
||||
|
||||
source $DOTFILES/bootstrap/linux/symlinks.bash
|
||||
source "$DOTFILES"/bootstrap/linux/symlinks.bash
|
||||
|
||||
if [ "$WHEEL" -eq 1 ]; then
|
||||
source $DOTFILES/tools/bash/xdg-compact.sh
|
||||
source $DOTFILES/tools/bash/global.bashrc
|
||||
source "$DOTFILES"/tools/bash/xdg-compact.sh
|
||||
source "$DOTFILES"/tools/bash/global.bashrc
|
||||
fi
|
||||
source $DOTFILES/tools/bash/profile
|
||||
source $DOTFILES/tools/bash/bashrc
|
||||
source $DOTFILES/tools/bash/bash_aliases
|
||||
source "$DOTFILES"/tools/bash/profile
|
||||
source "$DOTFILES"/tools/bash/bashrc
|
||||
source "$DOTFILES"/tools/bash/bash_aliases
|
||||
|
||||
if command -v zsh >/dev/null 2>&1; then
|
||||
|
||||
read -p "[ACTION] Do you want to setup zsh? (Y/n) " choice
|
||||
case "$choice" in
|
||||
read -p "[ACTION] Do you want to setup zsh? (Y/n) " -r choice
|
||||
case "$choice" in
|
||||
n | N)
|
||||
:
|
||||
;;
|
||||
:
|
||||
;;
|
||||
*)
|
||||
source $DOTFILES/bootstrap/components/zsh.sh
|
||||
;;
|
||||
esac
|
||||
source "$DOTFILES"/bootstrap/components/zsh.sh
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ "$WHEEL" -eq 0 ]; then
|
||||
echo "Done!"
|
||||
exit 0
|
||||
echo "Done!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
read -p "[ACTION] Do you want to use other package managers? (y/N) " choice
|
||||
# TODO: Add this part
|
||||
read -p "[ACTION] Do you want to use other package managers? (y/N) " -r choice
|
||||
case "$choice" in
|
||||
y | Y)
|
||||
y | Y)
|
||||
:
|
||||
;;
|
||||
*)
|
||||
*)
|
||||
:
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "[INFO] Installing Doom Emacs"
|
||||
|
||||
source $DOTFILES/bootstrap/components/emacs.sh
|
||||
source "$DOTFILES"/bootstrap/components/emacs.sh
|
||||
|
||||
# TODO: Untestest
|
||||
if [ "$IS_WSL" -eq 1 ]; then
|
||||
ln -sf "/mnt/c/Users/$WINDOWS_USER" "$HOME/winhome"
|
||||
ln -sf "/mnt/c/Users/$WINDOWS_USER/Downloads" "$HOME/Downloads"
|
||||
ln -sf "/mnt/c/Users/$WINDOWS_USER/Documents" "$HOME/Documents"
|
||||
ln -sf "/mnt/c/Users/$WINDOWS_USER/Desktop" "$HOME/Desktop"
|
||||
ln -sf "/mnt/c/Users/$WINDOWS_USER/Pictures" "$HOME/Pictures"
|
||||
ln -sf "/mnt/c/Users/$WINDOWS_USER/Music" "$HOME/Music"
|
||||
ln -sf "/mnt/c/Users/$WINDOWS_USER/Videos" "$HOME/Videos"
|
||||
fi
|
||||
|
||||
if [ "$GUI_SETUP" -eq 0 ]; then
|
||||
echo "Done!"
|
||||
exit 0
|
||||
echo "Done!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Wayland
|
||||
|
||||
source $DOTFILES/bootstrap/linux/chromium-flags.sh
|
||||
source "$DOTFILES"/bootstrap/linux/chromium-flags.bash
|
||||
|
||||
# Rime
|
||||
|
||||
source $DOTFILES/bootstrap/components/rime.sh
|
||||
source "$DOTFILES"/bootstrap/components/rime.sh
|
||||
|
||||
# TODO: Rewrite the script(mocha_port.fish) in bash/zsh or POSIX-compliant shell
|
||||
echo "[INFO] Installing Color Scheme (Catppuccin Mocha)"
|
||||
|
||||
fish $DOTFILES/bootstrap/temp/mocha_port.fish
|
||||
# fish $DOTFILES/bootstrap/temp/mocha_port.fish
|
||||
|
||||
source "$DOTFILES"/bootstrap/components/mocha-port.bash
|
||||
|
||||
echo "Done!"
|
||||
|
|
|
|||
|
|
@ -9,21 +9,21 @@ source "$DOTFILES/bootstrap/components/symlinks.bash"
|
|||
echo "[INFO] DOTFILES = $DOTFILES"
|
||||
|
||||
echo "[ACTION] Press any key to proceed"
|
||||
read -n 1
|
||||
read -r -n1 -s
|
||||
|
||||
echo "[INFO] Setting up symbolic links"
|
||||
|
||||
for src in "${!linkDots[@]}"; do
|
||||
dest="${linkDots[$src]}"
|
||||
echo "Linking $src to $dest"
|
||||
if [ -d "$src" ]; then
|
||||
test -d "$dest" && mv "$dest" "$dest.bak"
|
||||
ln -sf "$src" "$dest"
|
||||
elif [ -f "$src" ]; then
|
||||
dest_parent=$(dirname "$dest")
|
||||
test -d "$dest_parent" || mkdir -p "$dest_parent"
|
||||
ln -sf "$src" "$dest"
|
||||
else
|
||||
echo "[ERROR] $src does not exist"
|
||||
fi
|
||||
dest="${linkDots[$src]}"
|
||||
echo "Linking $src to $dest"
|
||||
if [ -d "$src" ]; then
|
||||
test -d "$dest" && mv "$dest" "$dest.bak"
|
||||
ln -sf "$src" "$dest"
|
||||
elif [ -f "$src" ]; then
|
||||
dest_parent=$(dirname "$dest")
|
||||
test -d "$dest_parent" || mkdir -p "$dest_parent"
|
||||
ln -sf "$src" "$dest"
|
||||
else
|
||||
echo "[ERROR] $src does not exist"
|
||||
fi
|
||||
done
|
||||
|
|
|
|||
0
bootstrap/linux/wsl.bash
Normal file
0
bootstrap/linux/wsl.bash
Normal file
Loading…
Add table
Add a link
Reference in a new issue