| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  | # CLI support for JIRA interaction | 
					
						
							| 
									
										
										
										
											2012-12-02 22:59:05 -07:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2015-09-11 18:37:39 -04:00
										 |  |  | # See README.md for details | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : ${JIRA_DEFAULT_ACTION:=new} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function jira() { | 
					
						
							| 
									
										
										
										
											2015-09-11 18:37:39 -04:00
										 |  |  |   emulate -L zsh | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   local action=${1:=$JIRA_DEFAULT_ACTION} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   local jira_url jira_prefix | 
					
						
							|  |  |  |   if [[ -f .jira-url ]]; then | 
					
						
							| 
									
										
										
										
											2012-12-02 22:59:05 -07:00
										 |  |  |     jira_url=$(cat .jira-url) | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   elif [[ -f ~/.jira-url ]]; then | 
					
						
							| 
									
										
										
										
											2012-12-02 22:59:05 -07:00
										 |  |  |     jira_url=$(cat ~/.jira-url) | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   elif [[ -n "${JIRA_URL}" ]]; then | 
					
						
							| 
									
										
										
										
											2015-07-06 22:00:53 +02:00
										 |  |  |     jira_url=${JIRA_URL} | 
					
						
							| 
									
										
										
										
											2012-09-28 22:41:30 -07:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2015-08-18 05:05:54 -04:00
										 |  |  |     _jira_url_help | 
					
						
							| 
									
										
										
										
											2014-08-19 15:42:39 +01:00
										 |  |  |     return 1 | 
					
						
							| 
									
										
										
										
											2012-12-02 22:59:05 -07:00
										 |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   if [[ -f .jira-prefix ]]; then | 
					
						
							| 
									
										
										
										
											2014-07-15 14:22:24 +01:00
										 |  |  |     jira_prefix=$(cat .jira-prefix) | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   elif [[ -f ~/.jira-prefix ]]; then | 
					
						
							| 
									
										
										
										
											2014-07-15 14:22:24 +01:00
										 |  |  |     jira_prefix=$(cat ~/.jira-prefix) | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   elif [[ -n "${JIRA_PREFIX}" ]]; then | 
					
						
							| 
									
										
										
										
											2015-07-06 22:00:53 +02:00
										 |  |  |     jira_prefix=${JIRA_PREFIX} | 
					
						
							| 
									
										
										
										
											2014-07-15 14:22:24 +01:00
										 |  |  |   else | 
					
						
							|  |  |  |     jira_prefix="" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |   if [[ $action == "new" ]]; then | 
					
						
							| 
									
										
										
										
											2012-12-02 22:59:05 -07:00
										 |  |  |     echo "Opening new issue" | 
					
						
							| 
									
										
										
										
											2015-08-05 00:32:57 +02:00
										 |  |  |     open_command "${jira_url}/secure/CreateIssue!default.jspa" | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   elif [[ "$action" == "assigned" || "$action" == "reported" ]]; then | 
					
						
							| 
									
										
										
										
											2015-08-18 05:05:54 -04:00
										 |  |  |     _jira_query $@ | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   elif [[ "$action" == "dashboard" ]]; then | 
					
						
							|  |  |  |     echo "Opening dashboard" | 
					
						
							| 
									
										
										
										
											2016-04-26 13:08:13 -04:00
										 |  |  |     if [[ "$JIRA_RAPID_BOARD" == "true" ]]; then | 
					
						
							|  |  |  |       open_command "${jira_url}/secure/RapidBoard.jspa" | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       open_command "${jira_url}/secure/Dashboard.jspa" | 
					
						
							|  |  |  |     fi | 
					
						
							| 
									
										
										
										
											2015-09-11 18:37:39 -04:00
										 |  |  |   elif [[ "$action" == "dumpconfig" ]]; then | 
					
						
							|  |  |  |     echo "JIRA_URL=$jira_url" | 
					
						
							|  |  |  |     echo "JIRA_PREFIX=$jira_prefix" | 
					
						
							|  |  |  |     echo "JIRA_NAME=$JIRA_NAME" | 
					
						
							|  |  |  |     echo "JIRA_RAPID_BOARD=$JIRA_RAPID_BOARD" | 
					
						
							|  |  |  |     echo "JIRA_DEFAULT_ACTION=$JIRA_DEFAULT_ACTION" | 
					
						
							| 
									
										
										
										
											2015-07-07 20:03:58 +02:00
										 |  |  |   else | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |     # Anything that doesn't match a special action is considered an issue name | 
					
						
							|  |  |  |     local issue_arg=$action | 
					
						
							|  |  |  |     local issue="${jira_prefix}${issue_arg}" | 
					
						
							|  |  |  |     local url_fragment='' | 
					
						
							| 
									
										
										
										
											2014-06-22 03:10:53 +02:00
										 |  |  |     if [[ "$2" == "m" ]]; then | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |       url_fragment="#add-comment" | 
					
						
							|  |  |  |       echo "Add comment to issue #$issue" | 
					
						
							| 
									
										
										
										
											2014-06-22 03:10:53 +02:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |       echo "Opening issue #$issue" | 
					
						
							| 
									
										
										
										
											2014-06-22 03:10:53 +02:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2015-07-07 18:50:23 +02:00
										 |  |  |     if [[ "$JIRA_RAPID_BOARD" == "true" ]]; then | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |       open_command "${jira_url}/issues/${issue}${url_fragment}" | 
					
						
							| 
									
										
										
										
											2014-06-22 03:10:53 +02:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |       open_command "${jira_url}/browse/${issue}${url_fragment}" | 
					
						
							| 
									
										
										
										
											2014-06-22 03:10:53 +02:00
										 |  |  |     fi | 
					
						
							| 
									
										
										
										
											2012-09-28 22:41:30 -07:00
										 |  |  |   fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 05:05:54 -04:00
										 |  |  | function _jira_url_help() { | 
					
						
							| 
									
										
										
										
											2015-07-13 13:08:18 -07:00
										 |  |  |   cat << EOF | 
					
						
							| 
									
										
										
										
											2015-09-11 18:37:39 -04:00
										 |  |  | error: JIRA URL is not specified anywhere. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-29 13:58:22 -07:00
										 |  |  | Valid options, in order of precedence: | 
					
						
							| 
									
										
										
										
											2015-07-13 13:08:18 -07:00
										 |  |  |   .jira-url file | 
					
						
							| 
									
										
										
										
											2015-07-29 13:58:22 -07:00
										 |  |  |   \$HOME/.jira-url file | 
					
						
							| 
									
										
										
										
											2015-09-11 18:37:39 -04:00
										 |  |  |   \$JIRA_URL environment variable | 
					
						
							| 
									
										
										
										
											2015-07-13 13:08:18 -07:00
										 |  |  | EOF | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 05:05:54 -04:00
										 |  |  | function _jira_query() { | 
					
						
							| 
									
										
										
										
											2015-09-11 18:37:39 -04:00
										 |  |  |   emulate -L zsh | 
					
						
							| 
									
										
										
										
											2015-07-07 20:26:00 +02:00
										 |  |  |   local verb="$1" | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   local jira_name lookup preposition query | 
					
						
							|  |  |  |   if [[ "${verb}" == "reported" ]]; then | 
					
						
							| 
									
										
										
										
											2015-07-07 19:56:22 +02:00
										 |  |  |     lookup=reporter | 
					
						
							|  |  |  |     preposition=by | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   elif [[ "${verb}" == "assigned" ]]; then | 
					
						
							| 
									
										
										
										
											2015-07-07 19:56:22 +02:00
										 |  |  |     lookup=assignee | 
					
						
							|  |  |  |     preposition=to | 
					
						
							|  |  |  |   else | 
					
						
							| 
									
										
										
										
											2015-09-11 18:37:39 -04:00
										 |  |  |     echo "error: not a valid lookup: $verb" >&2 | 
					
						
							| 
									
										
										
										
											2015-07-07 19:56:22 +02:00
										 |  |  |     return 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   jira_name=${2:=$JIRA_NAME} | 
					
						
							|  |  |  |   if [[ -z $jira_name ]]; then | 
					
						
							| 
									
										
										
										
											2015-09-11 18:37:39 -04:00
										 |  |  |     echo "error: JIRA_NAME not specified" >&2 | 
					
						
							| 
									
										
										
										
											2015-07-07 19:56:22 +02:00
										 |  |  |     return 1 | 
					
						
							|  |  |  |   fi | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-07 19:56:22 +02:00
										 |  |  |   echo "Browsing issues ${verb} ${preposition} ${jira_name}" | 
					
						
							| 
									
										
										
										
											2015-08-18 04:46:52 -04:00
										 |  |  |   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}" | 
					
						
							| 
									
										
										
										
											2014-08-19 15:42:39 +01:00
										 |  |  | } |