#!/usr/bin/env bash

set -euo pipefail

ID=""
REMOTE="origin"
LOCAL_BRANCH=""

while [[ $# -gt 0 ]]; do
	case $1 in
		--remote)
			REMOTE="$2"
			shift
			shift
		;;
		--local-branch)
			LOCAL_BRANCH="$2"
			shift
			shift
		;;
		*)
			if [[ -z "${ID}" ]]; then
				ID="$1"
				shift
			else
				echo "Unknown option $1"
				exit 1
			fi
		;;
	esac
done

if [[ -z "${ID}" ]]; then
	echo "Specify GitHub PR number"
	exit 1
fi

if [[ -z "${LOCAL_BRANCH}" ]]; then
	LOCAL_BRANCH="pr/${ID}"
fi

git fetch "${REMOTE}" "pull/${ID}/head:${LOCAL_BRANCH}"

git switch "${LOCAL_BRANCH}"