mirror of
https://github.com/ChrisTitusTech/linutil.git
synced 2024-12-25 12:59:45 +00:00
0d4f0a8a4e
Co-authored-by: nnyyxxxx <nnyyxxxx@users.noreply.github.com>
118 lines
3.9 KiB
Bash
118 lines
3.9 KiB
Bash
#!/bin/sh -e
|
|
|
|
. ../common-script.sh
|
|
|
|
gitpath="$HOME/.local/share/mybash"
|
|
|
|
installDepend() {
|
|
printf "%b\n" "${YELLOW}Installing Bash...${RC}"
|
|
case "$PACKAGER" in
|
|
pacman)
|
|
"$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm bash bash-completion tar bat tree unzip fontconfig git
|
|
;;
|
|
apt)
|
|
"$ESCALATION_TOOL" "$PACKAGER" install -y bash bash-completion tar bat tree unzip fontconfig git
|
|
;;
|
|
dnf)
|
|
"$ESCALATION_TOOL" "$PACKAGER" install -y bash bash-completion tar bat tree unzip fontconfig git
|
|
;;
|
|
zypper)
|
|
"$ESCALATION_TOOL" "$PACKAGER" install -y bash bash-completion tar bat tree unzip fontconfig git
|
|
;;
|
|
*)
|
|
printf "%b\n" "${RED}Unsupported package manager: $PACKAGER${RC}" # The packages above were grabbed out of the original mybash-setup-script.
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
cloneMyBash() {
|
|
# Check if the dir exists before attempting to clone into it.
|
|
if [ -d "$gitpath" ]; then
|
|
rm -rf "$gitpath"
|
|
fi
|
|
mkdir -p "$HOME/.local/share" # Only create the dir if it doesn't exist.
|
|
cd "$HOME" && git clone https://github.com/ChrisTitusTech/mybash.git "$gitpath"
|
|
}
|
|
|
|
installFont() {
|
|
# Check to see if the MesloLGS Nerd Font is installed (Change this to whatever font you would like)
|
|
FONT_NAME="MesloLGS Nerd Font Mono"
|
|
if fc-list :family | grep -iq "$FONT_NAME"; then
|
|
printf "%b\n" "${GREEN}Font '$FONT_NAME' is installed.${RC}"
|
|
else
|
|
printf "%b\n" "${YELLOW}Installing font '$FONT_NAME'${RC}"
|
|
# Change this URL to correspond with the correct font
|
|
FONT_URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Meslo.zip"
|
|
FONT_DIR="$HOME/.local/share/fonts"
|
|
TEMP_DIR=$(mktemp -d)
|
|
curl -sSLo "$TEMP_DIR"/"${FONT_NAME}".zip "$FONT_URL"
|
|
unzip "$TEMP_DIR"/"${FONT_NAME}".zip -d "$TEMP_DIR"
|
|
mkdir -p "$FONT_DIR"/"$FONT_NAME"
|
|
mv "${TEMP_DIR}"/*.ttf "$FONT_DIR"/"$FONT_NAME"
|
|
fc-cache -fv
|
|
rm -rf "${TEMP_DIR}"
|
|
printf "%b\n" "${GREEN}'$FONT_NAME' installed successfully.${RC}"
|
|
fi
|
|
}
|
|
|
|
installStarshipAndFzf() {
|
|
if command_exists starship; then
|
|
printf "%b\n" "${GREEN}Starship already installed${RC}"
|
|
return
|
|
fi
|
|
|
|
if ! curl -sSL https://starship.rs/install.sh | sh; then
|
|
printf "%b\n" "${RED}Something went wrong during starship install!${RC}"
|
|
exit 1
|
|
fi
|
|
if command_exists fzf; then
|
|
printf "%b\n" "${GREEN}Fzf already installed${RC}"
|
|
else
|
|
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
|
|
"$ESCALATION_TOOL" ~/.fzf/install
|
|
fi
|
|
}
|
|
|
|
installZoxide() {
|
|
if command_exists zoxide; then
|
|
printf "%b\n" "${GREEN}Zoxide already installed${RC}"
|
|
return
|
|
fi
|
|
|
|
if ! curl -sSL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh; then
|
|
printf "%b\n" "${RED}Something went wrong during zoxide install!${RC}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
linkConfig() {
|
|
OLD_BASHRC="$HOME/.bashrc"
|
|
if [ -e "$OLD_BASHRC" ] && [ ! -e "$HOME/.bashrc.bak" ]; then
|
|
printf "%b\n" "${YELLOW}Moving old bash config file to $HOME/.bashrc.bak${RC}"
|
|
if ! mv "$OLD_BASHRC" "$HOME/.bashrc.bak"; then
|
|
printf "%b\n" "${RED}Can't move the old bash config file!${RC}"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
printf "%b\n" "${YELLOW}Linking new bash config file...${RC}"
|
|
ln -svf "$gitpath/.bashrc" "$HOME/.bashrc" || {
|
|
printf "%b\n" "${RED}Failed to create symbolic link for .bashrc${RC}"
|
|
exit 1
|
|
}
|
|
ln -svf "$gitpath/starship.toml" "$HOME/.config/starship.toml" || {
|
|
printf "%b\n" "${RED}Failed to create symbolic link for starship.toml${RC}"
|
|
exit 1
|
|
}
|
|
printf "%b\n" "${GREEN}Done! restart your shell to see the changes.${RC}"
|
|
}
|
|
|
|
checkEnv
|
|
checkEscalationTool
|
|
installDepend
|
|
cloneMyBash
|
|
installFont
|
|
installStarshipAndFzf
|
|
installZoxide
|
|
linkConfig |