mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2025-11-04 21:31:19 +08:00 
			
		
		
		
	feat(jira): allow branch name customization (#12850)
Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
This commit is contained in:
		
							parent
							
								
									85c4941492
								
							
						
					
					
						commit
						5fd2059e5e
					
				@ -43,6 +43,22 @@ starting with "_": "MP-1234_fix_dashboard". In both these cases, the issue opene
 | 
			
		||||
This is also checks if the prefix is in the name, and adds it if not, so: "MP-1234" opens the issue "MP-1234",
 | 
			
		||||
"mp-1234" opens the issue "mp-1234", and "1234" opens the issue "MP-1234".
 | 
			
		||||
 | 
			
		||||
If your branch naming convention deviates, you can overwrite the jira_branch function to determine and echo the Jira issue key yourself.
 | 
			
		||||
Define a function `jira_branch` after sourcing `oh-my-zsh.sh` in your `.zshrc`.
 | 
			
		||||
Example:
 | 
			
		||||
```zsh
 | 
			
		||||
# Determine branch name from naming convention 'type/KEY-123/description'.
 | 
			
		||||
function jira_branch() {
 | 
			
		||||
  # Get name of the branch
 | 
			
		||||
  issue_arg=$(git rev-parse --abbrev-ref HEAD)
 | 
			
		||||
  # Strip prefixes like feature/ or bugfix/
 | 
			
		||||
  issue_arg=${issue_arg#*/}
 | 
			
		||||
  # Strip suffixes like /some-branch-description
 | 
			
		||||
  issue_arg=${issue_arg%%/*}
 | 
			
		||||
  # Return the value
 | 
			
		||||
  echo $issue_arg
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#### Debugging usage
 | 
			
		||||
 | 
			
		||||
@ -17,6 +17,30 @@ jira branch                     Opens an existing issue matching the current bra
 | 
			
		||||
EOF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# If your branch naming convention deviates, you can partially override this plugin function
 | 
			
		||||
# to determine the jira issue key based on your formatting.
 | 
			
		||||
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Customization#partially-overriding-an-existing-plugin
 | 
			
		||||
function jira_branch() {
 | 
			
		||||
  # Get name of the branch
 | 
			
		||||
  issue_arg=$(git rev-parse --abbrev-ref HEAD)
 | 
			
		||||
  # Strip prefixes like feature/ or bugfix/
 | 
			
		||||
  issue_arg=${issue_arg##*/}
 | 
			
		||||
  # Strip suffixes starting with _
 | 
			
		||||
  issue_arg=(${(s:_:)issue_arg})
 | 
			
		||||
  # If there is only one part, it means that there is a different delimiter. Try with -
 | 
			
		||||
  if [[ ${#issue_arg[@]} = 1 && ${issue_arg} == *-* ]]; then
 | 
			
		||||
    issue_arg=(${(s:-:)issue_arg})
 | 
			
		||||
    issue_arg="${issue_arg[1]}-${issue_arg[2]}"
 | 
			
		||||
  else
 | 
			
		||||
    issue_arg=${issue_arg[1]}
 | 
			
		||||
  fi
 | 
			
		||||
  if [[ "${issue_arg:l}" = ${jira_prefix:l}* ]]; then
 | 
			
		||||
    echo "${issue_arg}"
 | 
			
		||||
  else
 | 
			
		||||
    echo "${jira_prefix}${issue_arg}"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function jira() {
 | 
			
		||||
  emulate -L zsh
 | 
			
		||||
  local action jira_url jira_prefix
 | 
			
		||||
@ -91,24 +115,7 @@ function jira() {
 | 
			
		||||
    # but `branch` is a special case that will parse the current git branch
 | 
			
		||||
    local issue_arg issue
 | 
			
		||||
    if [[ "$action" == "branch" ]]; then
 | 
			
		||||
      # Get name of the branch
 | 
			
		||||
      issue_arg=$(git rev-parse --abbrev-ref HEAD)
 | 
			
		||||
      # Strip prefixes like feature/ or bugfix/
 | 
			
		||||
      issue_arg=${issue_arg##*/}
 | 
			
		||||
      # Strip suffixes starting with _
 | 
			
		||||
      issue_arg=(${(s:_:)issue_arg})
 | 
			
		||||
      # If there is only one part, it means that there is a different delimiter. Try with -
 | 
			
		||||
      if [[ ${#issue_arg[@]} = 1 && ${issue_arg} == *-* ]]; then
 | 
			
		||||
        issue_arg=(${(s:-:)issue_arg})
 | 
			
		||||
        issue_arg="${issue_arg[1]}-${issue_arg[2]}"
 | 
			
		||||
      else
 | 
			
		||||
        issue_arg=${issue_arg[1]}
 | 
			
		||||
      fi
 | 
			
		||||
      if [[ "${issue_arg:l}" = ${jira_prefix:l}* ]]; then
 | 
			
		||||
        issue="${issue_arg}"
 | 
			
		||||
      else
 | 
			
		||||
        issue="${jira_prefix}${issue_arg}"
 | 
			
		||||
      fi
 | 
			
		||||
      issue=$(jira_branch)
 | 
			
		||||
    else
 | 
			
		||||
      issue_arg=${(U)action}
 | 
			
		||||
      issue="${jira_prefix}${issue_arg}"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user