#!/bin/bash DOTFILES_DIR="$HOME/Projects/config" command_diff() { cd $DOTFILES_DIR git diff $@ } command_commit() { cd $DOTFILES_DIR git add . git commit -m $1 } command_status() { cd $DOTFILES_DIR git status } command_add() { file=$1 savepoint=$2 mkdir -p "$DOTFILES_DIR/$(dirname "$savepoint")" mv "$file" "$DOTFILES_DIR/$savepoint" ln -s "$DOTFILES_DIR/$savepoint" "$file" cd $DOTFILES_DIR git add "$savepoint" git commit -m "Added $savepoint" echo "$file added in $DOTFILES_DIR/$savepoint" } command_sync() { cd $DOTFILES_DIR git push; git pull } command_help() { echo "diff -- Show diffs" echo "commit [message] -- Add all files and commit" echo "status -- Show status" echo "add [file] [savepoint] -- Add file to dotfiles at savepoint, create symlink and add" echo "sync -- push and pull" } CMD=$1 shift case "$CMD" in diff|commit|add|status|sync|help) command_$CMD $@ ;; *) command_help ;; esac