45 lines
1.8 KiB
Bash
Executable File
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
|