#!/usr/bin/env bash
set -xeuo pipefail

remoteName="${1:-origin}"
targetBranch="${2:-main}"
shift && shift
TMPDIR="$(mktemp -d)"
currentBranch="$(git rev-parse --abbrev-ref HEAD)"
user="$(tea login list -o simple | cut -d" " -f4 | head -n1)"
tempRemoteBranch="$user-$currentBranch"

nix fmt -- --fail-on-change

git log --reverse --pretty="format:%s%n%n%b%n%n" "$remoteName/$targetBranch..HEAD" > "$TMPDIR"/commit-msg

$EDITOR "$TMPDIR"/commit-msg

COMMIT_MSG=$(cat "$TMPDIR"/commit-msg)

firstLine=$(echo "$COMMIT_MSG" | head -n1)
rest=$(echo "$COMMIT_MSG" | tail -n+2)

if [[ "$firstLine" == "$rest" ]]; then
  rest=""
fi
git push --force -u "$remoteName" HEAD:refs/heads/"$tempRemoteBranch"

tea pr create \
  --title "$firstLine" \
  --description "$rest" \
  --head "$tempRemoteBranch" \
  --base "$targetBranch" \
  --labels "needs-review" \
  "$@"
