#!/bin/sh

# Adapted from: https://seb.jambor.dev/posts/improving-shell-workflows-with-fzf/
# Requires the following variables to be set:
# - ATLASSIAN_EMAIL
# - ATLASSIAN_API_TOKEN
# - JIRA_HOSTNAME
# - JIRA_PROJECT

choose_issue() {
    jq_template='"\(.key): \(.fields.summary)"'
    query="project=$JIRA_PROJECT AND status not in (\"Done\") AND assignee=currentUser()"

    branch_name=$(
    curl \
      --data-urlencode "jql=$query" \
      --get \
      --user "$ATLASSIAN_EMAIL:$ATLASSIAN_API_TOKEN" \
      --silent \
      --compressed \
      "https://$JIRA_HOSTNAME/rest/api/2/search" |
      jq ".issues[] | $jq_template" |
      sed -e 's/"\(.*\)"/\1/' |
    fzf \
      --preview='jira-details {1}' \
      --preview-window=top:wrap |
    sed -e 's/: /:/' -e 's/[^a-zA-Z0-9:]/-/g' |
    awk -F ":" '{printf "%s/%s", $1, tolower($2)}'
    )

    echo "$branch_name"
}

issue_branch=$(choose_issue)
if [ -n "$issue_branch" ]; then
    echo "git checkout -b \"$issue_branch\""
fi