Skip to content

Instantly share code, notes, and snippets.

@charyorde
Forked from oliverdaff/jira-precommit.sh
Last active August 29, 2015 14:02
Show Gist options
  • Save charyorde/e5282804e0685703fb81 to your computer and use it in GitHub Desktop.
Save charyorde/e5282804e0685703fb81 to your computer and use it in GitHub Desktop.
#!/bin/sh -x
## REST API JIRA KEY check
#List of projects that do not require strict JIRA KEY commits
#list in space and case-insensitive
#NON_STRICT=""
# Authentication credentials
username=kayode
password=kayod3
JIRA_URL="jira.yookos.com"
DASHBOARD=http://$JIRA_URL/secure/Dashboard.jspa
# Set utilities
projKey=
COOKIE=/tmp/jira.cookie
CURL=/usr/bin/curl
GREP=/bin/grep
AWK=/usr/bin/awk
CAT=/bin/cat
WGET=/usr/bin/wget
SVNLOOK=/usr/bin/svnlook
REPOS=$1
TXN=$2
PATH=`$SVNLOOK changed $REPOS -t $TXN`
echo $PATH
#nonstrict=1
#strict_check(){
#PATH=`$SVNLOOK changed $REPOS -t $TXN`
#repo_proj=`echo $PATH | $AWK -F " " {'print $2'} | $AWK -F "\/" {'print $1'}`
#for project in $NON_STRICT; do
# if [ `echo $project | /usr/bin/tr [:upper:] [:lower:]` = `echo $repo_proj | /usr/bin/tr [:upper:] [:lower:]` ]; then
# echo "$project is not under Strict Commit do not check with JIRA KEY!"
# nonstrict=0
# fi
#done;
#}
comment_key(){
#check for JIRA type KEY in commit log and set
COMMENT=`$SVNLOOK log $REPOS -t $TXN`
JIRA_KEY=`echo $COMMENT | $GREP -Po '[A-Z]*\-[0-9]*'`
if [ ! -n $JIRA_KEY ];then
echo "Require Valid JIRA KEY part of this commit"
exit 1
else
projKey=$JIRA_KEY
JSON_URL=http://$JIRA_URL/rest/api/latest/issue/$projKey.json
JSON_FILE=/tmp/$projKey.json
fi
}
connect(){
#Authenticate to Jira
$CURL -s -u $username:$password --cookie-jar $COOKIE --output /dev/null $DASHBOARD || \
echo "Failed to Authenticate against $JIRA_URL"
#Download projKey.json from Jira
$CURL -s --cookie $COOKIE $JSON_URL -o $JSON_FILE || \
echo "Failed to Collect $projKey from $JIRA_URL"
}
valid(){
#Verify projKey match to confirm valid JIRA KEY
KEY=`$CAT $JSON_FILE | $GREP -Po '"key":"[A-Z]*\-[0-9]*"' | $AWK -F ":" {'print $2'}`
if [ "$KEY" = "\"$projKey\"" ];then
echo "KEY verified, Valid JIRA Issue"
else
echo "$project is under Strict Commit check with JIRA KEY!"
echo "Key not verified, Not a Valid JIRA issue"
exit 1
fi
}
remove(){
# remove temp files
rm $COOKIE $JSON_FILE
}
#run
#strict_check
#if (( $nonstrict ));then
comment_key
connect
valid
#fi
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment