mirror of
https://github.com/tj/git-extras.git
synced 2026-09-10 07:26:17 -04:00
* feat: add git-continue Also refactor `git-abort` to parse action from the called file name. There's a promise for this in #865 but that was a long time ago. * fix: add git-continue address review comments, fix the script, remove unnecessary testpath import.
43 lines
911 B
Bash
Executable file
43 lines
911 B
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
function discover_op() {
|
|
local gitdir
|
|
# git rev-parse emits an error if not in a git repo so only need to bail out
|
|
gitdir="$(git rev-parse --git-dir)" || exit
|
|
local op
|
|
for op in cherry_pick merge rebase revert ; do
|
|
if [ -f "${gitdir}/${op^^}_HEAD" ]; then
|
|
echo "${op/_/-}"
|
|
fi
|
|
done
|
|
}
|
|
|
|
function validate_op() {
|
|
local op="$1"
|
|
if [ -z "$op" ]; then
|
|
echo "No active operation found" >&2
|
|
exit 1
|
|
fi
|
|
if [[ "$(echo "$op" | wc -l)" -gt 1 ]]; then
|
|
echo "Multiple active operations found: $op" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function discover_action() {
|
|
local action=${1/git-/}
|
|
if [ "$action" != "abort" ] && [ "$action" != "continue" ]; then
|
|
echo "Invalid action: $1" >&2
|
|
exit 1
|
|
fi
|
|
echo "$action"
|
|
}
|
|
|
|
action=$(discover_action "$(basename "$0")")
|
|
op=$(discover_op)
|
|
validate_op "$op"
|
|
|
|
git "$op" "--$action"
|