#!/bin/bash # # The inception. # # Parameters BASENAME="`basename $0`" DIRNAME="$(cd `dirname $0` &> /dev/null && pwd)" # Main if [ -z "$1" ]; then echo "usage: $BASENAME [options]" elif [ "$1" == "init" ]; then ( cd $DIRNAME echo "Initializing submodules..." git submodule update --init if [ ! -e "$HOME/.dotfiles" ]; then echo "Cloning default dotfiles..." ./metadot/metadot clone default else echo "Updating dotfiles..." ./metadot/metadot update 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." elif [ "$1" == "load" ]; then ( cd $DIRNAME echo "Loading all dotfiles..." ./metadot/metadot load --all ./metadot/metadot deps --all ) echo "Done. Logout and login again to apply all changes." elif [ "$1" == "install" ]; then # We could just do that, but we shall make sure that code was verified #$0 init #$0 load echo "Please README!" elif [ "$1" == "deploy" ]; then if [ ! -z "$2" ]; then REMOTE="$2" MODULES="`$DIRNAME/metadot/metadot list | xargs`" # Sync apps if [ -e "$HOME/apps" ]; then rsync -avz --delete $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 <