#!/bin/bash # # The inception. # # Parameters BASENAME="`basename $0`" DIRNAME="$(cd `dirname $0` &> /dev/null && pwd)" EXCLUDES="--exclude=local --exclude=stowpkg/tree" # Make sure we're running git directly and not any existing wrapper GIT="/usr/bin/git" # Usage function inception_usage { echo "usage: $BASENAME [options]" exit 1 } # Initialize function inception_init { ( cd $DIRNAME echo "Initializing submodules..." $GIT submodule sync --recursive $GIT submodule update --init --recursive if [ ! -e "$HOME/.dotfiles" ]; then echo "Cloning default dotfiles..." ./metadot/metadot clone default else echo "Updating dotfiles..." ./metadot/metadot fetch fi #echo "Checking latest tag..." #cd $HOME/.dotfiles #$DIRNAME/utils-git/git-check-tag #echo "Checking out the latest tag..." #$DIRNAME/utils-git/git-checkout-tag echo "Checking dotfiles..." $DIRNAME/metadot/metadot version ) echo "" echo "Please manually verify dotfiles version and tag from the above output." echo "If everything is fine, proceed running this command again with the 'load' parameter." } # Load function inception_load { ( cd $DIRNAME BUNDLE="$3" DEPENDENCIES="$4" if [ "$BUNDLE" == "--all" ]; then echo "Loading all dotfiles..." ./metadot/metadot load --all if [ "$DEPENDENCIES" == "--deps" ]; then ./metadot/metadot deps --all fi elif [ -z "$BUNDLE" ]; then echo "Loading $BUNDLE dotfiles..." ./metadot/metadot load-bundle $BUNDLE if [ "$DEPENDENCIES" == "--deps" ]; then ./metadot/metadot deps-bundle $BUNDLE fi fi ) echo "Done. Logout and login again to apply all changes." } # Install function inception_install { $0 init $0 load $* } # Deploy function inception_deploy { if [ ! -z "$2" ]; then REMOTES="$*" for REMOTE in $REMOTES; do REMOTE="$2" MODULES="`$DIRNAME/metadot/metadot installed | xargs`" # Sync apps if [ -e "$HOME/apps" ]; then rsync -avz --delete $EXCLUDES $HOME/apps/ $REMOTE:apps/ fi # Sync dotfiles if [ -e "$HOME/.dotfiles" ]; then rsync -avz --delete $HOME/.dotfiles/ $REMOTE:.dotfiles/ fi # Sync loaded modules ssh -T $REMOTE <