Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Ohmyzsh
Commits
7cf892ec
Commit
7cf892ec
authored
Aug 18, 2015
by
Andrew Janke
Browse files
Add dashboard support and default-action configuration.
Some refactoring.
parent
ee4a423d
Changes
1
Show whitespace changes
Inline
Side-by-side
plugins/jira/jira.plugin.zsh
View file @
7cf892ec
# To use: add a .jira-url file in the base of your project
# CLI support for JIRA interaction
# You can also set JIRA_URL in your .zshrc or put .jira-url in your home directory
# .jira-url in the current directory takes precedence. The same goes with .jira-prefix
# and JIRA_PREFIX.
#
#
# If you use Rapid Board, set:
# Setup:
#JIRA_RAPID_BOARD="true"
# Add a .jira-url file in the base of your project
# in you .zshrc
# You can also set $JIRA_URL in your .zshrc or put .jira-url in your home directory
# A .jira-url in the current directory takes precedence.
# The same goes with .jira-prefix and $JIRA_PREFIX.
#
#
# Setup: cd to/my/project
# For example:
# cd to/my/project
# echo "https://name.jira.com" >> .jira-url
# echo "https://name.jira.com" >> .jira-url
# Usage: jira # opens a new issue
#
# Variables:
# $JIRA_RAPID_BOARD - set to "true" if you use Rapid Board
# $JIRA_DEFAULT_ACTION - action to do when `jira` is called witn no args
# defaults to "new"
# $JIRA_NAME - Your JIRA username. Used as default for assigned/reported
# $JIRA_PREFIX - Prefix added to issue ID arguments
#
#
# Usage:
# jira # Performs the default action
# jira new # opens a new issue
# jira reported [username]
# jira assigned [username]
# jira dashboard
# jira ABC-123 # Opens an existing issue
# jira ABC-123 # Opens an existing issue
open_jira_issue
()
{
# jira ABC-123 m # Opens an existing issue for adding a comment
if
[
-f
.jira-url
]
;
then
:
${
JIRA_DEFAULT_ACTION
:
=new
}
function
jira
()
{
local
action
=
${
1
:
=
$JIRA_DEFAULT_ACTION
}
local
jira_url jira_prefix
if
[[
-f
.jira-url
]]
;
then
jira_url
=
$(
cat
.jira-url
)
jira_url
=
$(
cat
.jira-url
)
elif
[
-f
~/.jira-url
]
;
then
elif
[
[
-f
~/.jira-url
]
]
;
then
jira_url
=
$(
cat
~/.jira-url
)
jira_url
=
$(
cat
~/.jira-url
)
elif
[[
"
${
JIRA_URL
}
"
!=
""
]]
;
then
elif
[[
-n
"
${
JIRA_URL
}
"
]]
;
then
jira_url
=
${
JIRA_URL
}
jira_url
=
${
JIRA_URL
}
else
else
jira_url_help
jira_url_help
return
1
return
1
fi
fi
local
jira_prefix
if
[[
-f
.jira-prefix
]]
;
then
if
[
-f
.jira-prefix
]
;
then
jira_prefix
=
$(
cat
.jira-prefix
)
jira_prefix
=
$(
cat
.jira-prefix
)
elif
[
-f
~/.jira-prefix
]
;
then
elif
[
[
-f
~/.jira-prefix
]
]
;
then
jira_prefix
=
$(
cat
~/.jira-prefix
)
jira_prefix
=
$(
cat
~/.jira-prefix
)
elif
[[
"
${
JIRA_PREFIX
}
"
!=
""
]]
;
then
elif
[[
-n
"
${
JIRA_PREFIX
}
"
]]
;
then
jira_prefix
=
${
JIRA_PREFIX
}
jira_prefix
=
${
JIRA_PREFIX
}
else
else
jira_prefix
=
""
jira_prefix
=
""
fi
fi
if
[
-z
"
$1
"
]
;
then
if
[[
$action
==
"new"
]]
;
then
echo
"Opening new issue"
echo
"Opening new issue"
open_command
"
${
jira_url
}
/secure/CreateIssue!default.jspa"
open_command
"
${
jira_url
}
/secure/CreateIssue!default.jspa"
elif
[[
"
$
1
"
=
"assigned"
||
"
$
1
"
=
"reported"
]]
;
then
elif
[[
"
$
action
"
=
=
"assigned"
||
"
$
action
"
=
=
"reported"
]]
;
then
jira_query
$@
jira_query
$@
elif
[[
"
$action
"
==
"dashboard"
]]
;
then
echo
"Opening dashboard"
open_command
"
${
jira_url
}
/secure/Dashboard.jspa"
else
else
local
addcomment
=
''
# 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
=
''
if
[[
"
$2
"
==
"m"
]]
;
then
if
[[
"
$2
"
==
"m"
]]
;
then
addcom
ment
=
"#add-comment"
url_frag
ment
=
"#add-comment"
echo
"Add comment to issue #
$
1
"
echo
"Add comment to issue #
$
issue
"
else
else
echo
"Opening issue #
$
1
"
echo
"Opening issue #
$
issue
"
fi
fi
if
[[
"
$JIRA_RAPID_BOARD
"
==
"true"
]]
;
then
if
[[
"
$JIRA_RAPID_BOARD
"
==
"true"
]]
;
then
open_command
"
${
jira_url
}
/issues/
${
jira_prefix
}${
1
}${
addcom
ment
}
"
open_command
"
${
jira_url
}
/issues/
${
issue
}${
url_frag
ment
}
"
else
else
open_command
"
${
jira_url
}
/browse/
${
jira_prefix
}${
1
}${
addcom
ment
}
"
open_command
"
${
jira_url
}
/browse/
${
issue
}${
url_frag
ment
}
"
fi
fi
fi
fi
}
}
jira_url_help
()
{
function
jira_url_help
()
{
cat
<<
EOF
cat
<<
EOF
JIRA url is not specified anywhere.
JIRA url is not specified anywhere.
Valid options, in order of precedence:
Valid options, in order of precedence:
...
@@ -65,40 +92,27 @@ Valid options, in order of precedence:
...
@@ -65,40 +92,27 @@ Valid options, in order of precedence:
EOF
EOF
}
}
jira_name
()
{
function
jira_query
()
{
if
[[
-z
"
$1
"
]]
;
then
if
[[
"
${
JIRA_NAME
}
"
!=
""
]]
;
then
jira_name
=
${
JIRA_NAME
}
else
echo
"JIRA_NAME not specified"
return
1
fi
else
jira_name
=
$@
fi
}
jira_query
()
{
local
verb
=
"
$1
"
local
verb
=
"
$1
"
local
jira_name lookup preposition
local
jira_name lookup preposition
query
if
[[
"
${
verb
}
"
=
"reported"
]]
;
then
if
[[
"
${
verb
}
"
=
=
"reported"
]]
;
then
lookup
=
reporter
lookup
=
reporter
preposition
=
by
preposition
=
by
elif
[[
"
${
verb
}
"
=
"assigned"
]]
;
then
elif
[[
"
${
verb
}
"
=
=
"assigned"
]]
;
then
lookup
=
assignee
lookup
=
assignee
preposition
=
to
preposition
=
to
else
else
echo
"not a valid lookup
$verb
"
echo
"not a valid lookup
:
$verb
"
>
&2
return
1
return
1
fi
fi
shift
1
jira_name
=
${
2
:
=
$JIRA_NAME
}
jira_name
$@
if
[[
-z
$
jira_name
]]
;
then
if
[[
$?
=
1
]]
;
then
echo
"JIRA_NAME not specified"
>
&2
return
1
return
1
fi
fi
echo
"Browsing issues
${
verb
}
${
preposition
}
${
jira_name
}
"
echo
"Browsing issues
${
verb
}
${
preposition
}
${
jira_name
}
"
open_command
"
${
jira_url
}
/secure/IssueNavigator.jspa?reset=true&jqlQuery=
${
lookup
}
+%3D+%22
${
jira_name
}
%22+AND+resolution+%3D+unresolved+ORDER+BY+priority+DESC%2C+created+ASC"
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
}
"
}
}
alias
jira
=
'open_jira_issue'
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment