#!/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

project=$(git config remote.origin.url | sed 's/^.*://' | sed 's/\.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"

