#!/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 git checkout -b "$issue_branch" fi