# git functions function git-branch-name() { git rev-parse --abbrev-ref HEAD } function git-current-remote() { git config branch.$(git-branch-name).remote } function grevs() { git rev-list --count $1.. } function gri() { REVISION_COUNT=$(grevs $1) git rebase -iS HEAD~$REVISION_COUNT } function gp() { if [[ $(git-current-remote | head -c1 | wc -c) -ne 0 ]]; then git push $(git-current-remote) $(git-branch-name) else git push --set-upstream origin $(git-branch-name) fi } function gll() { REMOTE=${1:-$(git-current-remote)} git pull $REMOTE $(git-branch-name) } function gfp() { git push -f origin $(git-branch-name) } function gfu() { BRANCH=$(git-branch-name) git fetch upstream $BRANCH && git merge upstream/$BRANCH } function gtg=() { git tag -s $1 && gp && gp --tags } function git-prune-branches() { REMOTE=$1 git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep $REMOTE) | awk '{print $1}' | xargs git branch -d } # kubernetes functions function k8s_ns_stuck() { NAMESPACE=$1 kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found -n $NAMESPACE } function k8s_ns_nuke() { NAMESPACE=$1 kubectl get namespace "$NAMESPACE" -o json \ | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \ | kubectl replace --raw /api/v1/namespaces/$NAMESPACE/finalize -f - } # other functions function random_string() { head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9!#$%&()*+,-./:;<=>?@[\]^_`{|}~' | head -c $1 } # devcontainer aliases function devcup() { devcontainer up --workspace-folder . } function devcexec() { devcontainer exec --workspace-folder . $1 } function devcshell() { devcexec /usr/bin/zsh } # Dotfile update command(s) function update_dotfiles() { echo "Fetching latest dotfiles." cd $XDG_CONFIG_HOME/dotfiles git pull origin main > /dev/null 2>&1 sh $XDG_CONFIG_HOME/dotfiles/setup.sh > /dev/null 2>&1 nvim --headless "+Lazy! install" +qa > /dev/null 2>&1 nvim --headless "+Lazy! clean" +qa > /dev/null 2>&1 } # Tool functions function vide() { neovide $1 & }