diff options
Diffstat (limited to 'plugins/jira')
| -rw-r--r-- | plugins/jira/README.md | 1 | ||||
| -rw-r--r-- | plugins/jira/_jira | 1 | ||||
| -rw-r--r-- | plugins/jira/jira.plugin.zsh | 33 | 
3 files changed, 27 insertions, 8 deletions
diff --git a/plugins/jira/README.md b/plugins/jira/README.md index efb8a743a..a934ae68c 100644 --- a/plugins/jira/README.md +++ b/plugins/jira/README.md @@ -21,6 +21,7 @@ jira new        # opens a new issue  jira dashboard  # opens your JIRA dashboard  jira reported [username]  # queries for issues reported by a user  jira assigned [username]  # queries for issues assigned to a user +jira branch     # opens an existing issue matching the current branch name  jira ABC-123    # opens an existing issue  jira ABC-123 m  # opens an existing issue for adding a comment  ``` diff --git a/plugins/jira/_jira b/plugins/jira/_jira index 03fe6a499..d64614233 100644 --- a/plugins/jira/_jira +++ b/plugins/jira/_jira @@ -7,6 +7,7 @@ _1st_arguments=(    'dashboard:open the dashboard'    'reported:search for issues reported by a user'    'assigned:search for issues assigned to a user' +  'branch:open the issue named after the git branch of the current directory'    'dumpconfig:display effective jira configuration'  ) diff --git a/plugins/jira/jira.plugin.zsh b/plugins/jira/jira.plugin.zsh index 341e23ec0..052481a60 100644 --- a/plugins/jira/jira.plugin.zsh +++ b/plugins/jira/jira.plugin.zsh @@ -2,13 +2,21 @@  #  # See README.md for details -: ${JIRA_DEFAULT_ACTION:=new} -  function jira() {    emulate -L zsh -  local action=${1:=$JIRA_DEFAULT_ACTION} +  local action jira_url jira_prefix +  if [[ -n "$1" ]]; then +    action=$1 +  elif [[ -f .jira-default-action ]]; then +    action=$(cat .jira-default-action) +  elif [[ -f ~/.jira-default-action ]]; then +    action=$(cat ~/.jira-default-action) +  elif [[ -n "${JIRA_DEFAULT_ACTION}" ]]; then +    action=${JIRA_DEFAULT_ACTION} +  else +    action="new" +  fi -  local jira_url jira_prefix    if [[ -f .jira-url ]]; then      jira_url=$(cat .jira-url)    elif [[ -f ~/.jira-url ]]; then @@ -38,7 +46,11 @@ function jira() {      _jira_query $@    elif [[ "$action" == "dashboard" ]]; then      echo "Opening dashboard" -    open_command "${jira_url}/secure/Dashboard.jspa" +    if [[ "$JIRA_RAPID_BOARD" == "true" ]]; then +      open_command "${jira_url}/secure/RapidBoard.jspa" +    else +      open_command "${jira_url}/secure/Dashboard.jspa" +    fi    elif [[ "$action" == "dumpconfig" ]]; then      echo "JIRA_URL=$jira_url"      echo "JIRA_PREFIX=$jira_prefix" @@ -47,8 +59,14 @@ function jira() {      echo "JIRA_DEFAULT_ACTION=$JIRA_DEFAULT_ACTION"    else      # Anything that doesn't match a special action is considered an issue name -    local issue_arg=$action -    local issue="${jira_prefix}${issue_arg}" +    # but `branch` is a special case that will parse the current git branch +    if [[ "$action" == "branch" ]]; then +      local issue_arg=$(git rev-parse --abbrev-ref HEAD) +      local issue="${jira_prefix}${issue_arg}" +    else +      local issue_arg=$action +      local issue="${jira_prefix}${issue_arg}" +    fi      local url_fragment=''      if [[ "$2" == "m" ]]; then        url_fragment="#add-comment" @@ -99,4 +117,3 @@ function _jira_query() {    query="${lookup}+%3D+%22${jira_name}%22+AND+resolution+%3D+unresolved+ORDER+BY+priority+DESC%2C+created+ASC"    open_command "${jira_url}/secure/IssueNavigator.jspa?reset=true&jqlQuery=${query}"  } -  | 
