mirror of
https://github.com/tj/git-extras.git
synced 2026-09-10 15:36:21 -04:00
71 lines
1 KiB
Bash
Executable file
71 lines
1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
#
|
|
# Echo <msg> and exit
|
|
#
|
|
|
|
abort() {
|
|
echo $@
|
|
exit 1
|
|
}
|
|
|
|
#
|
|
# Produce json with <title>, <body>, <head> and <base>
|
|
#
|
|
|
|
json() {
|
|
cat <<EOF
|
|
{
|
|
"title": "$1",
|
|
"body": "$2",
|
|
"head": "$3",
|
|
"base": "$4"
|
|
}
|
|
EOF
|
|
}
|
|
|
|
# user
|
|
|
|
user=$(git config --global user.email)
|
|
test -z "$user" && abort "git config user.email required"
|
|
|
|
# branch
|
|
|
|
branch=${1-$(git symbolic-ref HEAD | sed 's/refs\/heads\///')}
|
|
|
|
# make sure it's pushed
|
|
|
|
git push origin $branch || abort "failed to push $branch"
|
|
|
|
# lame hack to get project
|
|
|
|
origin=$(git config remote.origin.url)
|
|
if [[ $origin == git@* ]]; then
|
|
project=${origin##*:}
|
|
else
|
|
project=${origin#https://*/}
|
|
fi
|
|
project=${project%.git}
|
|
|
|
# prompt
|
|
|
|
echo
|
|
echo " create pull-request for $project '$branch'"
|
|
echo
|
|
printf " title: " && read title
|
|
printf " body: " && read body
|
|
printf " base [master]: " && read base
|
|
echo
|
|
|
|
# create pull request
|
|
|
|
if [ -z "$base" ]
|
|
then
|
|
base="master"
|
|
fi
|
|
|
|
body=$(json "$title" "$body" $branch "$base")
|
|
|
|
curl -u "$user" "https://api.github.com/repos/$project/pulls" -d "$body"
|
|
|