1
0
Fork 0
dotfiles/.local/bin/dotctl

45 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
[ -z "$DOTCTLCMD" ] && DOTCTLCMD="git --git-dir=$DOTFILEDIR --work-tree=$HOME"
case $1 in
ls) echo "==> ${DOTFILEBRANCH:=main} <=="
$DOTCTLCMD ls-tree --full-tree -r --name-only $DOTFILEBRANCH
echo "==> staging <=="
$DOTCTLCMD diff --name-only --cached
;;
sync)
$DOTCTLCMD add -A ~/.
echo "==> staging <=="
$DOTCTLCMD diff --name-only --cached
;;
add) $DOTCTLCMD add -f ${@:2} ;;
amend) $DOTCTLCMD commit --amend --no-edit ${@:2} ;;
autocheckout) $DOTCTLCMD checkout ${DOTFILEBRANCH:-main} ${@:2} ;;
cmd) $DOTCTLCMD ${@:2} ;;
commit) $DOTCTLCMD commit ${@:2} ;;
diff) $DOTCTLCMD diff --staged ${@:2} ;;
log) $DOTCTLCMD log ${@:2} ;;
pull) $DOTCTLCMD pull ${@:2} ;;
push) $DOTCTLCMD push -u origin ${DOTFILEBRANCH:-main} ;;
rm) $DOTCTLCMD rm --cached -r -f ${@:2};;
sdiff) $DOTCTLCMD diff --staged ${@:2} ;;
*) echo "dotctl - stupid bare git repo wrapper for dotfiles"
echo "Setup:"
echo " * cerate a bare repo, specify the remote repo and set its path to DOTFILEDIR"
echo " * specify a branch as DOTFILEBRANCH or use main by default"
echo "Usage: dotctl [OPTION] ([ARGUMENT])"
echo "Options:"
echo " add [FILE]: add FILE to the repository"
echo " amend: amend changes to an existing commit"
echo " commit: commit changes"
echo " diff: show diff of staged changes"
echo " log: same as normal log"
echo " ls: list files staging and used branch"
echo " push: push to DOTFILEBRANCH (default: main, currently: ${DOTFILEBRANCH:-main})"
echo " rm [FILE]: remove FILE from tracking only"
echo " sdiff: diff staged changed"
echo " sync: add all changes in tracked files"
;;
esac