Add 'ghpc' helper script
parent
32afe1d102
commit
6d92a0a33b
@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# ghpc (GitHub Push Current)
|
||||
#
|
||||
# - Push current branch to its remote. Try the following until it works:
|
||||
# - Plain 'git push'
|
||||
# - 'git push -f'
|
||||
# - Try the 'git push' command from the 'git push' error message
|
||||
# - Try adding '-f' to that command
|
||||
#
|
||||
|
||||
yay() { echo "SUCCESS" ; }
|
||||
boo() { echo "FAIL" ; }
|
||||
|
||||
FORCE=$([[ "$1" == "--force" || "$1" == "-f" ]] && echo 1)
|
||||
|
||||
if [[ ! $FORCE ]]; then
|
||||
echo -n "trying 'git push' ...... "
|
||||
git push >/dev/null 2>&1 && { yay ; exit ; }
|
||||
boo
|
||||
fi
|
||||
|
||||
echo -n "trying 'git push -f' ... "
|
||||
|
||||
# Get the error output from the failed push
|
||||
# and get the recommended 'git push' line
|
||||
git push -f 2>&1 | {
|
||||
CMD=""
|
||||
|
||||
ltrim() {
|
||||
[[ "$1" =~ [^[:space:]].* ]]
|
||||
printf "%s" "$BASH_REMATCH"
|
||||
}
|
||||
|
||||
while IFS= read -r line
|
||||
do
|
||||
#echo "$line"
|
||||
if [[ -z "$CMD" && $line =~ "git push" ]]; then
|
||||
CMD=$(ltrim "$line")
|
||||
fi
|
||||
done
|
||||
|
||||
# if a command was found try it
|
||||
if [[ -n "$CMD" ]]; then
|
||||
|
||||
boo
|
||||
|
||||
if [[ ! $FORCE ]]; then
|
||||
echo -n "trying '$CMD' ...... "
|
||||
$CMD >/dev/null 2>&1 && { yay ; exit ; }
|
||||
boo
|
||||
fi
|
||||
|
||||
fCMD=${CMD/ push / push -f }
|
||||
echo -n "trying '$fCMD' ... "
|
||||
$fCMD >/dev/null 2>&1 && { yay ; exit ; }
|
||||
boo
|
||||
|
||||
exit 1
|
||||
|
||||
else
|
||||
|
||||
yay
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
[[ ${PIPESTATUS[1]} == 1 ]] && echo "Sorry! Failed to push current branch."
|
Loading…
Reference in New Issue