#!/bin/bash # # This scripts installs the following: # bootstrap # prepareOS # brew # brewCTF # osx # anaconda export LIMITLESS_GITPATH="https://github.com/limitlessv/osx-dev-setup.git" if [ -z ${LIMITLESS_HOME} ]; then export LIMITLESS_HOME="$HOME/.LimitlessV" fi export TARIKH=`/bin/date +%Y%m%d%H%M%S` export LIMITLESS_HOME_OLD="$HOME/.LimitlessV.${TARIKH}" export LIMITLESS_BACKUP="$HOME/.LimitlessV.${TARIKH}/backup" runme() { cmd=$* echo "$cmd" $cmd ret=$? if [[ ${ret} != 0 ]]; then echo " " echo "ERROR: Return value non-zero for: $cmd" echo " " exit 1 fi } download_repository() { if [ -d ${LIMITLESS_HOME} ]; then # Saving current setting mv ${LIMITLESS_HOME} ${LIMITLESS_HOME_OLD} mkdir -p ${LIMITLESS_HOME} echo " " echo "Renamed directory ${LIMITLESS_HOME} to ${LIMITLESS_HOME_OLD}" echo "You may want to check and delete this directory if not required." echo "Old .dotfiles will be saved to ${LIMITLESS_HOME_OLD}" echo " " sleep ${SLEEP_TIME} else # Saving current setting echo "Old .dotfiles will be saved to ${LIMITLESS_HOME_OLD}" mkdir -p ${LIMITLESS_HOME_OLD} fi echo " " echo "LIMITLESS GIT Path = ${LIMITLESS_GITPATH}" echo " " sleep ${SLEEP_TIME} runme git clone ${LIMITLESS_GITPATH} ${LIMITLESS_HOME} --recursive cd ${LIMITLESS_HOME} echo " " } make_backup_files() { bk_dir_list=(.vim init anaconda1 anaconda3 .pip .ipython) bk_file_list=(.aliases .bash_profile .bash_prompt .bashrc .curlrc .editorconfig .exports .extra .functions .gitconfig .gitignore .gvimrc .hushlogin .inputrc .path .screenrc .vimrc .wgetrc) if [ -d ${LIMITLESS_BACKUP} ]; then echo "Backup will be store in: "$(LIMITLESS_BACKUP) else echo 'Create Backup directory: '$LIMITLESS_BACKUP mkdir -p ${LIMITLESS_BACKUP} fi for i in "${bk_dir_list[@]}" do if [ -d $HOME/$i ]; then echo 'Backup: ['$HOME/$i'] to '$LIMITLESS_BACKUP/$i ; cp -frpv $HOME/$i $LIMITLESS_BACKUP/$i; else echo $HOME/$i' Ignored'; fi; done for i in "${bk_file_list[@]}" do if [ -f $HOME/$i ]; then echo 'Backup: ['$HOME/$i'] to '$LIMITLESS_BACKUP/$i ; cp -fpv $HOME/$i $LIMITLESS_BACKUP/$i; else echo $HOME/$i' Ignored'; fi; done } function doIt() { rsync --exclude ".git/" --exclude ".DS_Store" --exclude "bootstrap.sh" \ --exclude "README.md" --exclude "LICENSE" --exclude ".idea/" -avh --no-perms . ~; source ~/.bash_profile; } echo "+---------------------------------------------------------+" echo "| Step 01.01: Ask for the administrator password upfront. | " echo "+---------------------------------------------------------+" sudo -v # Keep-alive: update existing `sudo` time stamp until `osxprep.sh` has finished while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null & echo "BEGIN: Updating OSX" sudo softwareupdate -ia --verbose echo "END: If this requires a restart, run the script again." # Install only recommended available updates #sudo softwareupdate -irv echo "BEGIN: Installing Xcode Command Line Tools." # Install Xcode command line tools xcode-select --install echo "END: If this requires a restart, run the script again." echo "BEGIN: If xcode-select: already installed, we are using \"Software Update.\"" sudo softwareupdate --install -a --verbose echo "END: If this requires a restart, run the script again." echo "BEGIN: backup" make_backup_files echo $LIMITLESS_HOME if [ ! -d "$LIMITLESS_HOME" ]; then mkdir -p ${LIMITLESS_HOME} fi cd $LIMITLESS_HOME echo "END: backup" echo "BEGIN: Download repository" download_repository echo "END: Download repository" echo "BEGIN: sync" cd bootstrap if [ "$1" == "--force" -o "$1" == "-f" ]; then doIt; else read -p "This may overwrite existing files in your home directory. Are you sure? (y/n) " -n 1; echo ""; if [[ $REPLY =~ ^[Yy]$ ]]; then doIt; fi; fi; cd .. echo "END: sync" echo "BEGIN: brew" source homebrew/brew-group-permissions.sh source homebrew/brew.sh source homebrew/brew-CTF.sh echo "END: brew" unset runme; unset download_repository; unset make_backup_files; unset doIt;