From d0e473827560cd876dd39958f06bb530ea80c429 Mon Sep 17 00:00:00 2001 From: Adrien Luxey Date: Fri, 8 Feb 2019 11:36:41 +0100 Subject: [PATCH] improved install script --- .gitignore | 1 + install.sh | 91 +++++++++++++++++++++++++++++++++++++++++++----------- sync.sh | 18 ----------- 3 files changed, 74 insertions(+), 36 deletions(-) create mode 100644 .gitignore delete mode 100755 sync.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..15c1e5d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.installed diff --git a/install.sh b/install.sh index f1e2bfc..a8a517f 100755 --- a/install.sh +++ b/install.sh @@ -3,12 +3,27 @@ # Adrien Luxey - Feb. 2019 # Script inspired by https://github.com/mathiasbynens/dotfiles/blob/master/bootstrap.sh - -# cd to this file's directory +# Get dotfiles dir DOTDIR=$(cd "$(dirname ${BASH_SOURCE})"; pwd) -# echo "DOTDIR: " $DOTDIR +INSTALLED_FLAG_FILE="$DOTDIR/.installed" +INSTALL_SUBLIME=0 -function syncDotfiles() { + +function printHelp { + cat <<-EOF + USAGE: $0 [OPTIONS] + + OPTIONS: + -s|--sublime Install Sublime Text 3 + -h|--help Show this help + + The script will install dependencies once (remove ${INSTALLED_FLAG_FILE} to redo) and symlink dotfiles to their destination in your \$HOME. + EOF + exit $1; +} + +function syncDotfiles { + echo Removing previous dotfiles... rm $HOME/.zshrc > /dev/null 2>&1 rm $HOME/.vimrc > /dev/null 2>&1 rm $HOME/.tmux.conf > /dev/null 2>&1 @@ -16,33 +31,73 @@ function syncDotfiles() { rm -rf $HOME/.tmux > /dev/null 2>&1 rm -rf $HOME/.config/sublime-text-3/Packages/User > /dev/null 2>&1 + echo Installing our dotfiles... ln -s $DOTDIR/zshrc $HOME/.zshrc ln -s $DOTDIR/vimrc $HOME/.vimrc ln -s $DOTDIR/tmux.conf $HOME/.tmux.conf ln -s $DOTDIR/vim $HOME/.vim ln -s $DOTDIR/tmux $HOME/.tmux - ln -s $DOTDIR/sublime $HOME/.config/sublime-text-3/Packages/User - + ln -s $DOTDIR/sublime $HOME/.config/sublime-text-3/Packages/User } -syncDotfiles -function installDependencies() { +function installDependencies { + echo Installing dependencies... + # Dependencies - sudo apt update - sudo apt install -y apt-transport-https curl zsh fonts-powerline + sudo apt update > /dev/null 2>&1 + sudo apt install -y apt-transport-https curl zsh fonts-powerline > /dev/null 2>&1 # Install Sublime Text - wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - - echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list - sudo apt update - sudo apt install sublime-text -y + if [[ ${INSTALL_SUBLIME} -eq 1 ]]; then + echo Installing Sublime Text 3... + wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - > /dev/null 2>&1 + echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list > /dev/null 2>&1 + sudo apt update > /dev/null 2>&1 + sudo apt install sublime-text -y > /dev/null 2>&1 + fi # Install Oh My Zsh - sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" - # Install powerlevel9k theme in Oh-My-Zsh - git clone https://github.com/bhilburn/powerlevel9k.git $HOME/.oh-my-zsh/custom/themes/powerlevel9k + if [ ! -d "$HOME/.oh-my-zsh" ]; then + echo Installing Oh-My-Zsh... + sh -c "$(wget -q https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" > /dev/null 2>&1 + # Install powerlevel9k theme in Oh-My-Zsh + if [ ! -d "$HOME/.oh-my-zsh/custom/themes/powerlevel9k" ]; then + echo Installing Powerlevel9k theme... + git clone https://github.com/bhilburn/powerlevel9k.git $HOME/.oh-my-zsh/custom/themes/powerlevel9k > /dev/null 2>&1 + fi + fi # Set ZSH as default shell - sudo -u $USER chsh -s $(which zsh) + if [ ! "$SHELL" = "$(which zsh)" ]; then + echo Setting ZSH as default shell... + chsh -s $(which zsh) + fi } +# Parse command-line arguments +while (( "$#" )); do + case "$1" in + -h|--help) + printHelp 0 + ;; + -s|--sublime) + INSTALL_SUBLIME=1 + shift + ;; + --) + shift + break + ;; + -*|--*=) + echo "Error: Unsupported flag $1" >&2 + printHelp 1 + ;; + esac +done + +if [ ! -f $INSTALLED_FLAG_FILE ]; then + installDependencies && touch $INSTALLED_FLAG_FILE +fi +syncDotfiles +echo "All done!" +exit 0 \ No newline at end of file diff --git a/sync.sh b/sync.sh deleted file mode 100755 index 31fe00a..0000000 --- a/sync.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -# Adrien Luxey - Feb. 2019 -# Script inspired by https://github.com/mathiasbynens/dotfiles/blob/master/bootstrap.sh - -# cd to this file's directory -cd "$(dirname "${BASH_SOURCE}")"; - -git pull origin master - -# Get dotfiles (and dot directories) in current directory -dotfiles=$(find . -maxdepth 1 -regex "\./\..+" -printf "%f\n") - -function syncDotfiles() { - ln -s $dotfiles ~ -} - -syncDotfiles