#!/bin/sh

# Checking a pr using hub

set -e

require() {
  if [[ -z $(command -v "$1" 2>/dev/null) ]]; then
    echo " 🛑  Please install $1 and try again"
    exit 1
  fi
}

require jq
require gh
require fzf

# get the list of open pull requests
prs=$(gh pr list --json number,title --limit 100 | jq -r '.[] | "\(.number) \(.title)"')

# select a pr
pr=$(echo "$prs" | fzf --prompt="Select a PR: " --height=50% --reverse --preview="gh pr view {1} --json 'files' | jq -r '.files|map(.path)|.[]'")

# get the pr number
pr_number=$(echo "$pr" | awk '{print $1}')

[ -z "$pr_number" ] && echo "🛑 No PR selected" && exit 1

echo "Checkout PR: $pr_number"
gh pr checkout "$pr_number"