dotfiles/install.sh
2022-09-07 19:47:46 -05:00

166 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
packages="sshpass tmux python3-pip cargo vim-nox build-essential python3-dev \
gcc-9 g++-9 python2 python2-dev guestfish libncurses-dev"
pip="awscli cmake"
read -p "Are you sure? (Y/N) "
if [[ "$REPLY" != "Y" ]]
then
echo "OK, Bye!"
exit 0
fi
echo "Creating necessary directories ..."
mkdir -p ~/.config
release=$(lsb_release -d | grep -i ubuntu > /dev/null && echo ubuntu || echo unknown)
echo "Release is $release"
install_packages() {
if [[ "$release" == "ubuntu" ]]
then
echo "Installing packages ..."
sudo apt install -y $packages
echo "Updating alternatives ..."
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9
fi
}
install_pip() {
if [[ -f /usr/bin/pip3 ]]
then
echo "Pip 3 detected, installing packages ..."
pip install --user -U $pip
fi
if [[ -f ~/.dotfiles/inputrc ]]
then
echo "Installing inputrc ..."
rm -rf ~/.inputrc
ln -sf ~/.dotfiles/inputrc ~/.inputrc
fi
if [[ -f ~/.dotfiles/bash/bashrc ]]
then
echo "Dotfiles bashrc found, linking it ..."
rm -rf ~/.bashrc
ln -sf ~/.dotfiles/bash/bashrc ~/.bashrc
fi
if [[ -f ~/.dotfiles/tmux/tmux.conf ]]
then
echo "Dotfiles tmux.conf found, linking it ..."
rm -rf ~/.tmux.conf
ln -sf ~/.dotfiles/tmux/tmux.conf ~/.tmux.conf
rm -rf ~/.tmux
ln -sf ~/.dotfiles/tmux ~/.tmux
fi
}
install_starship() {
# I hate this but no other option worked ...
if [[ ! -f /usr/local/bin/starship ]]
then
echo "Installing starship ..."
curl -sS https://starship.rs/install.sh | sh
fi
}
setup_starship() {
if [[ -f ~/.dotfiles/starship/starship.toml ]]
then
echo "Installing starship configuration ..."
rm -rf ~/.config/starship.toml
ln -sf ~/.dotfiles/starship/starship.toml ~/.config/starship.toml
fi
}
setup_git() {
if [[ -f ~/.dotfiles/git/gitconfig ]]
then
echo "Installing git configuration ..."
rm -rf ~/.gitconfig
ln -sf ~/.dotfiles/git/gitconfig ~/.gitconfig
fi
}
setup_ssh() {
if [[ -d ~/.dotfiles/ssh ]]
then
echo "Installing ssh configuration ..."
rm -rf ~/.ssh
ln -sf ~/.dotfiles/ssh ~/.ssh
fi
}
setup_vim() {
if [[ -d ~/.dotfiles/vim ]]
then
echo "Installing vim configuration ..."
rm -rf ~/.vimrc
mkdir -p ~/.vim/bundle
mkdir -p ~/.vimundo
if [[ ! -d ~/.vim/bundle/Vundle.vim ]]
then
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
fi
ln -sf ~/.dotfiles/vim/vimrc ~/.vimrc
echo "Installing vim plugins ..."
vim +'PlugInstall --sync' +qa
fi
}
install_ycm() {
if [[ -d ~/.vim/bundle/YouCompleteMe ]]
then
echo "Installing ycm dependencies"
python3 ~/.vim/bundle/YouCompleteMe/install.py
fi
}
install_projects() {
if [[ -d ~/.dotfiles/projects ]]
then
for f in ~/.dotfiles/projects/*
do
if [[ -f $f/basegit ]]
then
basegit=$(<$f/basegit)
echo "Base git $basegit sourced ..."
fi
if [[ -f $f/projects ]]
then
while read -r project
do
dir=$(basename $f)
mkdir -p ~/dev/${dir}
echo "Cloning ${basegit}${project} in ~/dev/${dir}/${project}"
git clone ${basegit}${project} ~/dev/${dir}/${project}
done < $f/projects
fi
done
fi
}
if [[ $1 != "" ]]
then
$1
else
install_packages
install_pip
install_starship
setup_starship
setup_ssh
setup_git
setup_vim
install_ycm
install_projects
fi
. ~/.bashrc