Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
c084a13d
Commit
c084a13d
authored
Aug 31, 2015
by
Robby Russell
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4259 from apjanke/jira-prefix-and-help-and-stuff
jira: prefix variable dashboard, default action, and completion
parents
e59f4cb1
dc42e8d4
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
110 additions
and
61 deletions
+110
-61
_jira
plugins/jira/_jira
+21
-0
jira.plugin.zsh
plugins/jira/jira.plugin.zsh
+89
-61
No files found.
plugins/jira/_jira
0 → 100644
View file @
c084a13d
#compdef jira
#autoload
local -a _1st_arguments
_1st_arguments=(
'new:create a new issue'
'dashboard:open the dashboard'
'reported:search for issues reported by a user'
'assigned:search for issues assigned to a user'
)
_arguments -C \
':command:->command' \
'*::options:->options'
case $state in
(command)
_describe -t commands "jira subcommand" _1st_arguments
return
;;
esac
plugins/jira/jira.plugin.zsh
View file @
c084a13d
# To use: add a .jira-url file in the base of your project
# 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
# CLI support for JIRA interaction
#
# If you use Rapid Board, set:
#JIRA_RAPID_BOARD="true"
# in you .zshrc
# Setup:
# Add a .jira-url file in the base of your project
# 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
# echo "https://name.jira.com" >> .jira-url
# Usage: jira # opens a new issue
# jira ABC-123 # Opens an existing issue
open_jira_issue
()
{
if
[
-f
.jira-url
]
;
then
# For example:
# cd to/my/project
# echo "https://name.jira.com" >> .jira-url
#
# 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 m # Opens an existing issue for adding a comment
:
${
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
)
elif
[
-f
~/.jira-url
]
;
then
elif
[
[
-f
~/.jira-url
]
]
;
then
jira_url
=
$(
cat
~/.jira-url
)
elif
[[
"x
$JIRA_URL
"
!=
"x
"
]]
;
then
jira_url
=
$
JIRA_URL
elif
[[
-n
"
${
JIRA_URL
}
"
]]
;
then
jira_url
=
$
{
JIRA_URL
}
else
echo
"JIRA url is not specified anywhere."
_jira_url_help
return
1
fi
if
[
-f
.jira-prefix
]
;
then
if
[
[
-f
.jira-prefix
]
]
;
then
jira_prefix
=
$(
cat
.jira-prefix
)
elif
[
-f
~/.jira-prefix
]
;
then
elif
[
[
-f
~/.jira-prefix
]
]
;
then
jira_prefix
=
$(
cat
~/.jira-prefix
)
elif
[[
-n
"
${
JIRA_PREFIX
}
"
]]
;
then
jira_prefix
=
${
JIRA_PREFIX
}
else
jira_prefix
=
""
fi
if
[
-z
"
$1
"
]
;
then
if
[[
$action
==
"new"
]]
;
then
echo
"Opening new issue"
open_command
"
${
jira_url
}
/secure/CreateIssue!default.jspa"
elif
[[
"
$1
"
=
"assigned"
||
"
$1
"
=
"reported"
]]
;
then
jira_query
$@
else
local
addcomment
=
''
elif
[[
"
$action
"
==
"assigned"
||
"
$action
"
==
"reported"
]]
;
then
_jira_query
$@
elif
[[
"
$action
"
==
"dashboard"
]]
;
then
echo
"Opening dashboard"
open_command
"
${
jira_url
}
/secure/Dashboard.jspa"
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
=
''
if
[[
"
$2
"
==
"m"
]]
;
then
addcom
ment
=
"#add-comment"
echo
"Add comment to issue #
$
1
"
url_frag
ment
=
"#add-comment"
echo
"Add comment to issue #
$
issue
"
else
echo
"Opening issue #
$
1
"
echo
"Opening issue #
$
issue
"
fi
if
[[
"x
$JIRA_RAPID_BOARD
"
=
"xtrue"
]]
;
then
open_command
"
$jira_url
/issues/
$jira_prefix$1$addcomment
"
if
[[
"
$JIRA_RAPID_BOARD
"
==
"true"
]]
;
then
open_command
"
${
jira_url
}
/issues/
${
issue
}${
url_fragment
}
"
else
open_command
"
$jira_url
/browse/
$jira_prefix$1$addcomment
"
open_command
"
${
jira_url
}
/browse/
${
issue
}${
url_fragment
}
"
fi
fi
}
jira_name
()
{
if
[[
-z
"
$1
"
]]
;
then
if
[[
"x
${
JIRA_NAME
}
"
!=
"x"
]]
;
then
jira_name
=
${
JIRA_NAME
}
else
echo
"JIRA_NAME not specified"
return
1
fi
function
_jira_url_help
()
{
cat
<<
EOF
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
()
{
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
else
jira_name
=
$@
echo
"not a valid lookup:
$verb
"
>
&2
return
1
fi
jira_name
=
${
2
:
=
$JIRA_NAME
}
if
[[
-z
$jira_name
]]
;
then
echo
"JIRA_NAME not specified"
>
&2
return
1
fi
}
jira_query
()
{
verb
=
"
$1
"
if
[[
"
${
verb
}
"
=
"reported"
]]
;
then
lookup
=
reporter
preposition
=
by
elif
[[
"
${
verb
}
"
=
"assigned"
]]
;
then
lookup
=
assignee
preposition
=
to
else
echo
"not a valid lookup
$verb
"
return
1
fi
shift
1
jira_name
$@
if
[[
$?
=
1
]]
;
then
return
1
fi
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"
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
}
"
}
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