split bootstrap logic

This commit is contained in:
MorganGeek 2020-07-05 08:45:22 +02:00
parent 74319d622c
commit d5a5a180a3

View File

@ -12,15 +12,11 @@ ln -snf ~/Code/dotfiles/dot_scripts ~/.scripts
ln -snf ~/Code/dotfiles/dot_gitconfig ~/.gitconfig ln -snf ~/Code/dotfiles/dot_gitconfig ~/.gitconfig
chmod +x ~/.scripts/*.sh chmod +x ~/.scripts/*.sh
# Install missing package (Linux) if [[ $(uname) == "Linux" ]]; then
case "$(uname -s)" in IS_LINUX=true
Linux) else
echo "(Linux) Installing Development Tools" IS_LINUX=false
yum install sudo -y fi
sudo yum groupinstall 'Development Tools' -y
sudo yum install git which zip unzip ruby curl file docker gcc make libxcrypt-compat vim-enhanced -y
;;
esac
if [[ $(uname) == "Darwin" ]]; then if [[ $(uname) == "Darwin" ]]; then
IS_MAC=true IS_MAC=true
@ -28,215 +24,262 @@ else
IS_MAC=false IS_MAC=false
fi fi
# Install missing package (Linux)
function installLinuxPackages() {
if [ "$IS_LINUX" = true ]; then
echo "(Linux) Installing Development Tools"
yum install sudo -y
sudo yum groupinstall 'Development Tools' -y
sudo yum install git which zip unzip ruby curl file docker gcc make libxcrypt-compat vim-enhanced -y
fi
}
# Install HomeBrew # Install HomeBrew
if [ "$IS_MAC" = true ]; then function installBrew() {
echo "(Mac OS X) installing homebrew" if [ "$IS_MAC" = true ]; then
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" echo "(Mac OS X) installing homebrew"
# Prevent `Error: Your Homebrew is outdated. Please run `brew update`.` /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
echo "Updating Homebrew" # Prevent `Error: Your Homebrew is outdated. Please run `brew update`.`
brew update echo "Updating Homebrew"
fi brew update
# Path to ruby
# Path to ruby export PATH="/usr/local/opt/ruby/bin:$PATH"
export PATH="/usr/local/opt/ruby/bin:$PATH" fi
}
# Create symbolic links # Create symbolic links
echo "Creating symbolic links" function createSymbolicLinks() {
ln -snf ~/Code/dotfiles/dot_profile ~/.profile echo "Creating symbolic links"
ln -snf ~/.local/share/chezmoi/ ~/dotfiles ln -snf ~/Code/dotfiles/dot_profile ~/.profile
ln -snf ~/Code/dotfiles/Gemfile ~/Gemfile ln -snf ~/.local/share/chezmoi/ ~/dotfiles
ln -snf ~/Code/dotfiles/README.md ~/README.md ln -snf ~/Code/dotfiles/Gemfile ~/Gemfile
ln -snf ~/Code/dotfiles/dot_bash_profile ~/.bash_profile ln -snf ~/Code/dotfiles/README.md ~/README.md
ln -snf ~/Code/dotfiles/dot_macos ~/.macos ln -snf ~/Code/dotfiles/dot_bash_profile ~/.bash_profile
ln -snf ~/Code/dotfiles/dot_scripts/checkci.sh /usr/local/bin/checkci ln -snf ~/Code/dotfiles/dot_macos ~/.macos
ln -snf ~/Code/dotfiles/dot_vimrc ~/.vimrc ln -snf ~/Code/dotfiles/dot_scripts/checkci.sh /usr/local/bin/checkci
# custom linters ln -snf ~/Code/dotfiles/dot_vimrc ~/.vimrc
ln -snf ~/Code/dotfiles/dot_vim/ale_linters ~/.vim/ale_linters ln -snf ~/Code/dotfiles/dot_vim/ale_linters ~/.vim/ale_linters # custom linters
ln -snf ~/Code/dotfiles/dot_zsh_aliases ~/.zsh_aliases ln -snf ~/Code/dotfiles/dot_zsh_aliases ~/.zsh_aliases
ln -snf ~/Code/dotfiles/dot_zsh_functions ~/.zsh_functions ln -snf ~/Code/dotfiles/dot_zsh_functions ~/.zsh_functions
ln -snf ~/Code/dotfiles/dot_zshrc ~/.zshrc ln -snf ~/Code/dotfiles/dot_zshrc ~/.zshrc
ln -snf ~/Code/dotfiles/dot_zshrc.pre-oh-my-zsh ~/.zshrc.pre-oh-my-zsh ln -snf ~/Code/dotfiles/dot_zshrc.pre-oh-my-zsh ~/.zshrc.pre-oh-my-zsh
ln -snf ~/Code/dotfiles/private_dot_ssh/config ~/.ssh/config ln -snf ~/Code/dotfiles/private_dot_ssh/config ~/.ssh/config
ln -snf ~/Code/dotfiles/requirements.txt ~/requirements.txt ln -snf ~/Code/dotfiles/requirements.txt ~/requirements.txt
ln -snf ~/Code/dotfiles/dot_surfraw.conf ~/.surfraw.conf ln -snf ~/Code/dotfiles/dot_surfraw.conf ~/.surfraw.conf
ln -snf ~/Code/dotfiles/private_dot_3llo/config.sh ~/.3llo_config ln -snf ~/Code/dotfiles/private_dot_3llo/config.sh ~/.3llo_config
ln -snf ~/Code/dotfiles/dot_ansiweatherrc ~/.ansiweatherrc ln -snf ~/Code/dotfiles/dot_ansiweatherrc ~/.ansiweatherrc
ln -snf ~/Code/dotfiles/dot_p10k.zsh ~/.p10k.zsh ln -snf ~/Code/dotfiles/dot_p10k.zsh ~/.p10k.zsh
ln -snf ~/Code/dotfiles/dot_git-template ~/.git-template ln -snf ~/Code/dotfiles/dot_git-template ~/.git-template
}
# Install Docker Desktop for Mac
if [ "$IS_MAC" = true ]; then
echo "(Mac OS X) Installing Docker"
~/.scripts/install_docker_for_mac.sh
fi
# Install dependencies (apps, fonts, ...) with Brew # Install dependencies (apps, fonts, ...) with Brew
if [ "$IS_MAC" = true ]; then function installMacSoftware() {
echo "(Mac OS X) Brew installing stuff (apps, fonts, ...)" if [ "$IS_MAC" = true ]; then
ln -snf ~/Code/dotfiles/Brewfile ~/Brewfile echo "(Mac OS X) Installing Docker"
brew bundle ~/.scripts/install_docker_for_mac.sh
fi echo "(Mac OS X) Brew installing stuff (apps, fonts, ...)"
ln -snf ~/Code/dotfiles/Brewfile ~/Brewfile
brew bundle
# Configure Mac specific symbolic links
echo "(Mac OS X) Adding symbolic links"
mkdir -pv "$HOME/Library/Application Support/Code/User/snippets"
ln -snf "$HOME/.config/Code/User/settings.json" "$HOME/Library/Application Support/Code/User/settings.json"
ln -snf "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Mackup/Library/Application Support/Code/User/snippets" "$HOME/Library/Application Support/Code/User/snippets"
ln -snf "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Mackup/.mackup.cfg" "$HOME/.mackup.cfg"
fi
}
# Install dependencies (apps, fonts, ...) for CentOS # Install dependencies (apps, fonts, ...) for CentOS
case "$(uname -s)" in function installLinuxSoftware() {
Linux) if [ "$IS_LINUX" = true ]; then
echo "(CentOS) Installing stuff (apps, ...)" echo "(CentOS) Installing stuff (apps, ...)"
chmod +x ~/Code/dotfiles/centos.sh chmod +x ~/Code/dotfiles/centos.sh
~/Code/dotfiles/centos.sh ~/Code/dotfiles/centos.sh
;; fi
esac }
# Configure Mac specific symbolic links
if [ "$IS_MAC" = true ]; then
echo "(Mac OS X) Adding symbolic links"
mkdir -pv "$HOME/Library/Application Support/Code/User/snippets"
ln -snf "$HOME/.config/Code/User/settings.json" "$HOME/Library/Application Support/Code/User/settings.json"
ln -snf "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Mackup/Library/Application Support/Code/User/snippets" "$HOME/Library/Application Support/Code/User/snippets"
ln -snf "$HOME/Library/Mobile Documents/com~apple~CloudDocs/Mackup/.mackup.cfg" "$HOME/.mackup.cfg"
fi
# Switch to ZSH # Switch to ZSH
sudo -v function switchToZsh() {
echo "switching to ZSH" sudo -v
command -v zsh >>/etc/shells echo "switching to ZSH"
chsh -s "$(command -v zsh)" command -v zsh >>/etc/shells
chsh -s "$(command -v zsh)"
}
# Use SDKMan to install development tools # Use SDKMan to install development tools
echo "Installing SDKMan as development tools manager" function installSDKMan() {
curl -s "https://get.sdkman.io" | bash echo "Installing SDKMan as development tools manager"
curl -s "https://get.sdkman.io" | bash
echo "SDKMan installing development tools" echo "SDKMan installing development tools"
sdk install java sdk install java
sdk install gradle sdk install gradle
sdk install java 8.0.222-zulu sdk install java 8.0.222-zulu
sdk install kotlin sdk install kotlin
echo "SDKMan updating" echo "SDKMan updating"
sdk selfupdate sdk selfupdate
}
case "$(uname -s)" in function installRubyOnLinux() {
Linux) if [ "$IS_LINUX" = true ]; then
echo '(Linux) Installing ruby' echo '(Linux) Installing ruby'
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
curl -L get.rvm.io | bash -s stable curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh source /etc/profile.d/rvm.sh
rvm reload rvm reload
rvm requirements run rvm requirements run
rvm install 2.3.7 rvm install 2.3.7
;; fi
esac }
# Install bundler for managing ruby dependencies and Gemfile # Install bundler for managing ruby dependencies and Gemfile
echo "Installing bundler for managing ruby dependencies and Gemfile" function installBundler() {
sudo gem install bundler echo "Installing bundler for managing ruby dependencies and Gemfile"
bundle install sudo gem install bundler
bundle install
}
# Install Oh My Zsh and some cool dependencies # Install Oh My Zsh and some cool dependencies
echo "Installing Oh My Zsh + customizing themes and plugins" function installOhMyZsh() {
echo 'source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme' ~/.zshrc >>! echo "Installing Oh My Zsh + customizing themes and plugins"
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" echo 'source /usr/local/opt/powerlevel10k/powerlevel10k.zsh-theme' ~/.zshrc >>!
git clone https://github.com/AlexisBRENON/oh-my-zsh-reminder "$ZSH_CUSTOM/plugins/reminder" sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting" git clone https://github.com/AlexisBRENON/oh-my-zsh-reminder "$ZSH_CUSTOM/plugins/reminder"
git clone https://github.com/zsh-users/zsh-autosuggestions "$ZSH_CUSTOM/plugins/zsh-autosuggestions" git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting"
ln -snf ~/Code/dotfiles/dot_zshrc ~/.zshrc git clone https://github.com/zsh-users/zsh-autosuggestions "$ZSH_CUSTOM/plugins/zsh-autosuggestions"
ln -snf ~/Code/dotfiles/dot_zshrc.pre-oh-my-zsh ~/.zshrc.pre-oh-my-zsh ln -snf ~/Code/dotfiles/dot_zshrc ~/.zshrc
ln -snf ~/Code/dotfiles/dot_zshrc.pre-oh-my-zsh ~/.zshrc.pre-oh-my-zsh
echo "Installing Vundle + VIM Plugins" }
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim function installVimPlugins() {
vim +PluginInstall +qall >/dev/null echo "Installing Vundle + VIM Plugins"
#https://github.com/ycm-core/YouCompleteMe/blob/master/README.md#installation git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
cd "$HOME/.vim/bundle/YouCompleteMe" || exit vim +PluginInstall +qall >/dev/null
./install.py --all #https://github.com/ycm-core/YouCompleteMe/blob/master/README.md#installation
cd "$HOME" || exit cd "$HOME/.vim/bundle/YouCompleteMe" || exit
git clone https://github.com/dbeniamine/cheat.sh-vim.git ~/.vim/cheat.sh-vim ./install.py --all
cd "$HOME" || exit
git clone https://github.com/dbeniamine/cheat.sh-vim.git ~/.vim/cheat.sh-vim
}
# Install no-more-secrets # Install no-more-secrets
echo "Installing no-more-secrets (for fun)" function installNoMoreSecrets() {
git clone https://github.com/bartobri/no-more-secrets.git ~/Code/no-more-secrets echo "Installing no-more-secrets (for fun)"
cd "$HOME/Code/no-more-secrets" || exit git clone https://github.com/bartobri/no-more-secrets.git ~/Code/no-more-secrets
make nms sneakers cd "$HOME/Code/no-more-secrets" || exit
sudo make install make nms sneakers
cd "$HOME" || exit sudo make install
cd "$HOME" || exit
}
# OSX Defaults # OSX Defaults
if [ "$IS_MAC" = true ]; then function overrideMacOsDefaults() {
echo "(Mac OS X) Loading preferences" if [ "$IS_MAC" = true ]; then
sudo sh .macos echo "(Mac OS X) Loading preferences"
fi sudo sh .macos
fi
}
# Customize /etc/hosts # Customize /etc/hosts
echo "Overriding /etc/hosts" function overrideEtcHosts() {
curl https://someonewhocares.org/hosts/hosts -o /etc/hosts echo "Overriding /etc/hosts"
curl https://someonewhocares.org/hosts/hosts -o /etc/hosts
}
# Install pip and pipenv function installSoftware() {
echo "Installing pip and pipenv" # Install pip and pipenv
sudo easy_install pip echo "Installing pip and pipenv"
sudo pip install --upgrade pip sudo easy_install pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py sudo pip install --upgrade pip
sudo python3 get-pip.py curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
if [ "$IS_MAC" = true ]; then sudo python3 get-pip.py
echo "(Mac OS X) Updating PATH for loading pip user installed packages" if [ "$IS_MAC" = true ]; then
ln -snf /usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/bin/pip pip3 echo "(Mac OS X) Updating PATH for loading pip user installed packages"
export PATH="$PATH:/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/bin/:/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/bin" ln -snf /usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/bin/pip pip3
fi export PATH="$PATH:/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/bin/:/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/bin"
fi
echo "Upgrading pip" echo "Upgrading pip"
sudo pip install --upgrade pip sudo pip install --upgrade pip
echo "Pip installing stuff" echo "Pip installing stuff"
pip install -r requirements.txt pip install -r requirements.txt
# was used for some slack cli in python... https://pypi.org/project/slack-cli/ # was used for some slack cli in python... https://pypi.org/project/slack-cli/
# pip3 install pipenv # pip3 install pipenv
# pyenv install 3.6.0 # pyenv install 3.6.0
# Install baton (CLI to manage Spotify playback) https://github.com/joshuathompson/baton # Install baton (CLI to manage Spotify playback) https://github.com/joshuathompson/baton
case "$(uname -s)" in case "$(uname -s)" in
Darwin) Darwin)
echo '(Mac OS X) Installing baton (spotify CLI)' echo '(Mac OS X) Installing baton (spotify CLI)'
curl -sSL https://github.com/joshuathompson/baton/releases/download/0.1.7/baton-0.1.7-darwin-amd64 -o /usr/local/bin/baton && chmod +x /usr/local/bin/baton curl -sSL https://github.com/joshuathompson/baton/releases/download/0.1.7/baton-0.1.7-darwin-amd64 -o /usr/local/bin/baton && chmod +x /usr/local/bin/baton
;; ;;
Linux) Linux)
echo '(Linux) Installing baton (spotify CLI)' echo '(Linux) Installing baton (spotify CLI)'
curl -sSL https://github.com/joshuathompson/baton/releases/download/0.1.7/baton-0.1.7-linux-amd64 -o /usr/local/bin/baton && chmod +x /usr/local/bin/baton curl -sSL https://github.com/joshuathompson/baton/releases/download/0.1.7/baton-0.1.7-linux-amd64 -o /usr/local/bin/baton && chmod +x /usr/local/bin/baton
;; ;;
*) *)
echo 'Non supported OS : Installation aborted for baton (spotify CLI)' echo 'Non supported OS : Installation aborted for baton (spotify CLI)'
exit exit
;; ;;
esac esac
# Use rustup to install the Rust compiler (rustc) and the Rust package manager (cargo). # Use rustup to install the Rust compiler (rustc) and the Rust package manager (cargo).
echo "Installing Rust compiler and package manager" echo "Installing Rust compiler and package manager"
rustup-init -y rustup-init -y
rustup component add rustfmt rustup component add rustfmt
# Install pa11y tool for local webpage accessibility analysis # Install pa11y tool for local webpage accessibility analysis
echo "Installing pa11y tool for local webpage accessibility analysis" echo "Installing pa11y tool for local webpage accessibility analysis"
npm install -g pa11y npm install -g pa11y
git clone https://github.com/sherlock-project/sherlock.git ~/Code/sherlock git clone https://github.com/sherlock-project/sherlock.git ~/Code/sherlock
cd sherlock || exit cd sherlock || exit
python3 -m pip install -r requirements.txt python3 -m pip install -r requirements.txt
git config --global init.templateDir ~/.git-template git config --global init.templateDir ~/.git-template
pre-commit init-templatedir ~/.git-template pre-commit init-templatedir ~/.git-template
terraform-docs completion zsh >/usr/local/share/zsh/site-functions/_terraform-docs terraform-docs completion zsh >/usr/local/share/zsh/site-functions/_terraform-docs
autoload -U compinit && compinit autoload -U compinit && compinit
go get -u -v github.com/jessfraz/dockfmt go get -u -v github.com/jessfraz/dockfmt
go get -u -v github.com/dmlittle/scenery go get -u -v github.com/dmlittle/scenery
go get -u -v github.com/camptocamp/terraboard go get -u -v github.com/camptocamp/terraboard
sudo curl -L git.io/scope -o /usr/local/bin/scope sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope sudo chmod a+x /usr/local/bin/scope
#scope launch }
# Upgrade # Upgrade
echo "Upgrading apps" function upgradeSoftware() {
~/.scripts/upgrade.sh echo "Upgrading apps"
~/.scripts/upgrade.sh
}
# Reload # Reload
echo "Reloading config" function reloadConfig() {
~/.scripts/reload.sh echo "Reloading config"
~/.scripts/reload.sh
}
function doIt() {
installLinuxPackages;
installBrew;
createSymbolicLinks;
installMacSoftware;
installLinuxSoftware;
switchToZsh;
installSDKMan;
installRubyOnLinux;
installBundler;
installOhMyZsh;
installVimPlugins;
installNoMoreSecrets;
overrideMacOsDefaults;
overrideEtcHosts;
installSoftware;
upgradeSoftware;
reloadConfig;
}
doIt;