Blame view
repos/robbyrussell/oh-my-zsh/plugins/jira/jira.plugin.zsh
2.79 KB
|
ed37aae5b
|
1 |
# CLI support for JIRA interaction |
|
093a6c34b
|
2 |
# |
|
ed37aae5b
|
3 4 5 6 7 8 9 10 11 12 |
# See README.md for details
: ${JIRA_DEFAULT_ACTION:=new}
function jira() {
emulate -L zsh
local action=${1:=$JIRA_DEFAULT_ACTION}
local jira_url jira_prefix
if [[ -f .jira-url ]]; then
|
|
093a6c34b
|
13 |
jira_url=$(cat .jira-url) |
|
ed37aae5b
|
14 |
elif [[ -f ~/.jira-url ]]; then |
|
093a6c34b
|
15 |
jira_url=$(cat ~/.jira-url) |
|
ed37aae5b
|
16 17 |
elif [[ -n "${JIRA_URL}" ]]; then
jira_url=${JIRA_URL}
|
|
093a6c34b
|
18 |
else |
|
ed37aae5b
|
19 |
_jira_url_help |
|
093a6c34b
|
20 21 |
return 1
fi
|
|
ed37aae5b
|
22 |
if [[ -f .jira-prefix ]]; then |
|
093a6c34b
|
23 |
jira_prefix=$(cat .jira-prefix) |
|
ed37aae5b
|
24 |
elif [[ -f ~/.jira-prefix ]]; then |
|
093a6c34b
|
25 |
jira_prefix=$(cat ~/.jira-prefix) |
|
ed37aae5b
|
26 27 |
elif [[ -n "${JIRA_PREFIX}" ]]; then
jira_prefix=${JIRA_PREFIX}
|
|
093a6c34b
|
28 29 30 |
else
jira_prefix=""
fi
|
|
ed37aae5b
|
31 32 |
if [[ $action == "new" ]]; then
|
|
093a6c34b
|
33 |
echo "Opening new issue" |
|
dcebc9e8f
|
34 |
open_command "${jira_url}/secure/CreateIssue!default.jspa"
|
|
ed37aae5b
|
35 36 37 38 |
elif [[ "$action" == "assigned" || "$action" == "reported" ]]; then
_jira_query $@
elif [[ "$action" == "dashboard" ]]; then
echo "Opening dashboard"
|
|
d9bebbb3c
|
39 40 41 42 43 |
if [[ "$JIRA_RAPID_BOARD" == "true" ]]; then
open_command "${jira_url}/secure/RapidBoard.jspa"
else
open_command "${jira_url}/secure/Dashboard.jspa"
fi
|
|
ed37aae5b
|
44 45 46 47 48 49 50 51 52 53 54 |
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"
else
# 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=''
|
|
238d8e65a
|
55 |
if [[ "$2" == "m" ]]; then |
|
ed37aae5b
|
56 57 |
url_fragment="#add-comment"
echo "Add comment to issue #$issue"
|
|
238d8e65a
|
58 |
else |
|
ed37aae5b
|
59 |
echo "Opening issue #$issue" |
|
238d8e65a
|
60 |
fi |
|
ed37aae5b
|
61 62 |
if [[ "$JIRA_RAPID_BOARD" == "true" ]]; then
open_command "${jira_url}/issues/${issue}${url_fragment}"
|
|
238d8e65a
|
63 |
else |
|
ed37aae5b
|
64 |
open_command "${jira_url}/browse/${issue}${url_fragment}"
|
|
238d8e65a
|
65 |
fi |
|
093a6c34b
|
66 67 |
fi } |
|
ed37aae5b
|
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
function _jira_url_help() {
cat << EOF
error: JIRA URL is not specified anywhere.
Valid options, in order of precedence:
.jira-url file
\$HOME/.jira-url file
\$JIRA_URL environment variable
EOF
}
function _jira_query() {
emulate -L zsh
local verb="$1"
local jira_name lookup preposition query
if [[ "${verb}" == "reported" ]]; then
lookup=reporter
preposition=by
elif [[ "${verb}" == "assigned" ]]; then
lookup=assignee
preposition=to
|
|
093a6c34b
|
89 |
else |
|
ed37aae5b
|
90 91 92 93 94 95 96 |
echo "error: not a valid lookup: $verb" >&2
return 1
fi
jira_name=${2:=$JIRA_NAME}
if [[ -z $jira_name ]]; then
echo "error: JIRA_NAME not specified" >&2
return 1
|
|
093a6c34b
|
97 |
fi |
|
093a6c34b
|
98 |
|
|
ed37aae5b
|
99 100 101 |
echo "Browsing issues ${verb} ${preposition} ${jira_name}"
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}"
|
|
093a6c34b
|
102 |
} |