utils/src/gut.sh

73 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env sh
#
# gut: git but gross
# author: Dylan Lom <djl@dylanlom.com>
#
# Copyright (C) 2021 Dylan Lom <djl@dylanlom.com>
#
# Permission to use, copy, modify, and/or distribute this software for any purpose
# with or without fee is hereby granted.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
# FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
# OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
# THIS SOFTWARE.
#
# CHRISTMAS GIT MAGIC
add() {
truthy "$1" \
&& git add $1 \
#|| (for f in $(git status --porcelain | cut -c4-); do)
}
alias co='checkout'
checkout() {
truthy "$1" && target="$1" || target="$(git config init.defaultBranch)"
git checkout "$target"
}
alias save='stash'
stash() {
truthy "$1" \
&& git stash push -m "$1" \
|| git stash push
}
# Is anything already staged
# then: commit that
# else: stage and commit everything
commit() {
status
git status --porcelain | grep '^[^ ]*A' \
&& git commit -a \
|| (git add . && git commit "$1")
}
amend() {
git commit --amend -a
}
push() {
git push $1
}
alias update='pull'
pull() {
git pull $1
}
status() {
git status --short
}
diff() {
git diff $1
}
$@