From 99cee2f2f2266d042062e046ce375ca0707dc0e2 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 28 Jan 2018 10:52:18 -0200 Subject: Updates kvmx: 0171ddb Make kvmx-supervise work for regular users --- infection | 198 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100755 infection (limited to 'infection') diff --git a/infection b/infection new file mode 100755 index 0000000..82e0d43 --- /dev/null +++ b/infection @@ -0,0 +1,198 @@ +#!/bin/bash +# +# The inception. +# + +# Parameters +BASENAME="`basename $0`" +DIRNAME="$(cd `dirname $0` &> /dev/null && pwd)" +EXCLUDES="--exclude=local --exclude=stowpkg/tree" +DATE="`date +%Y%m%d%I%M%S`" +BACKUPS="$HOME/.backups/$DATE" + +# 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 &> /dev/null + + echo "Initializing submodules..." + $GIT submodule sync --recursive + $GIT submodule update --init --recursive + + # Convert to new dotfiles layout + # + # This way we can easily check the integrity of our dotfiles + # once the integrity of the apps repo is checked + if [ -e "$HOME/.dotfiles" ]; then + if [ ! -h "$HOME/.dotfiles" ] || [ "`readlink $HOME/.dotfiles`" != "apps/dotfiles" ]; then + mkdir -p $BACKUPS + mv $HOME/.dotfiles $BACKUPS/ + ( cd $HOME &> /dev/null && ln -s apps/dotfiles .dotfiles ) + fi + else + ( cd $HOME &> /dev/null && ln -s apps/dotfiles .dotfiles ) + fi + + #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." + + #cd - +} + +# Load +function inception_load { + ( + cd $DIRNAME &> /dev/null + + 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 <