Created
July 28, 2015 17:52
-
-
Save ericvanjohnson/9f28d7bc4158b6050206 to your computer and use it in GitHub Desktop.
ZSH Plugin to open Redmine tickets from the Command Line
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# To use: add a .redmine-url file in the base of your project | |
# You can also set redmine_URL in your .zshrc or put .redmine-url in your home directory | |
# .redmine-url in the current directory takes precedence | |
# | |
# If you use Rapid Board, set: | |
#redmine_RAPID_BOARD="true" | |
# in you .zshrc | |
# | |
# Setup: cd to/my/project | |
# echo "https://name.redmine.com" >> .redmine-url | |
# Usage: redmine # opens a new issue | |
# redmine ABC-123 # Opens an existing issue | |
open_redmine_issue () { | |
local open_cmd | |
if [[ "$OSTYPE" = darwin* ]]; then | |
open_cmd='open' | |
else | |
open_cmd='xdg-open' | |
fi | |
if [ -f .redmine-url ]; then | |
redmine_url=$(cat .redmine-url) | |
elif [ -f ~/.redmine-url ]; then | |
redmine_url=$(cat ~/.redmine-url) | |
elif [[ "x$redmine_URL" != "x" ]]; then | |
redmine_url=$redmine_URL | |
else | |
echo "redmine url is not specified anywhere." | |
return 1 | |
fi | |
if [ -f .redmine-prefix ]; then | |
redmine_prefix=$(cat .redmine-prefix) | |
elif [ -f ~/.redmine-prefix ]; then | |
redmine_prefix=$(cat ~/.redmine-prefix) | |
else | |
redmine_prefix="" | |
fi | |
if [ -z "$1" ]; then | |
echo "View Projects" | |
$open_cmd "${redmine_url}/projects" | |
elif [[ "$1" = "assigned" || "$1" = "reported" ]]; then | |
redmine_query $@ | |
else | |
local addcomment='' | |
if [[ "$2" == "m" ]]; then | |
addcomment="#add-comment" | |
echo "Add comment to issue #$1" | |
else | |
echo "Opening issue #$1" | |
fi | |
if [[ "x$redmine_RAPID_BOARD" = "xtrue" ]]; then | |
$open_cmd "$redmine_url/issues/$redmine_prefix$1$addcomment" | |
else | |
$open_cmd "$redmine_url/issues/$redmine_prefix$1$addcomment" | |
fi | |
fi | |
} | |
redmine_name () { | |
if [[ -z "$1" ]]; then | |
if [[ "x${redmine_NAME}" != "x" ]]; then | |
redmine_name=${redmine_NAME} | |
else | |
echo "redmine_NAME not specified" | |
return 1 | |
fi | |
else | |
redmine_name=$@ | |
fi | |
} | |
redmine_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 | |
redmine_name $@ | |
if [[ $? = 1 ]]; then | |
return 1 | |
fi | |
echo "Browsing issues ${verb} ${preposition} ${redmine_name}" | |
$open_cmd "${redmine_url}/secure/IssueNavigator.jspa?reset=true&jqlQuery=${lookup}+%3D+%22${redmine_name}%22+AND+resolution+%3D+unresolved+ORDER+BY+priority+DESC%2C+created+ASC" | |
} | |
alias redmine='open_redmine_issue' | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment