Created
May 26, 2017 15:01
-
-
Save blomquisg/9f28431802fc6f8843c2dba60b636c0f to your computer and use it in GitHub Desktop.
List out all the PRs that were merged in a sprint across several repos for MIQ
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
#!/bin/bash | |
DEFAULT_STATE="open" | |
BROWSER=`which google-chrome` | |
GITHUB_CLIENT_ID= | |
GITHUB_CLIENT_SECRET= | |
function usage() | |
{ | |
program_name=`basename $0` | |
cat << __USAGE_STRING | |
USAGE: | |
List milestones | |
$program_name -l | |
Open PRs | |
$program_name [-m MILESTONE] [-s STATE] [-d DATE] | |
-m MILESTONE is a string like "Sprint+42+Ending+June+20%2C+2016\" | |
-s STATE is the state of the PRs to retrieve ("closed", "merged", "open"[default]) | |
-d DATE is the date string for external provider repos like "2016-11-19" | |
Help | |
$program_name -h | |
__USAGE_STRING | |
} | |
function get_command() | |
{ | |
local command=`which $1 2>/dev/null` | |
if [ $? -ne 0 ]; then | |
echo "Command not found: $1" | |
exit 1 | |
fi | |
echo "$command" | |
} | |
function list_milestones() | |
{ | |
CURL=`get_command "curl"` | |
JQ=`get_command "jq"` | |
$CURL -s "https://api.github.com/repos/ManageIQ/manageiq/milestones?state=all&per_page=10&client_id=$GITHUB_CLIENT_ID&client_secret=$GITHUB_CLIENT_SECRET" | $JQ '.[]["title"]' | |
} | |
function open_url() | |
{ | |
url=$1 | |
message=$2 | |
echo "$message" | |
$BROWSER "$url" &>/dev/null | |
} | |
function open_core_prs() { | |
core_url="$1" | |
providers_url="$2" | |
milestone="$3" | |
PROVIDERS=( amazon ansible_tower cloud console containers foreman google \ | |
hawkular microsoft/cloud microsoft/infra network openstack/cloud \ | |
openstack/infra oracle physical-infrastructure rhevm softlayer \ | |
virtual-infrastructure vmware/infra vmware/cloud ) | |
for provider in "${PROVIDERS[@]}"; do | |
provider_url="$providers_url/$provider+$milestone" | |
open_url "$provider_url" "Opening $provider in browser ($provider_url)" | |
done | |
provider_url="$providers_url+$milestone" | |
open_url "$provider_url" "Opening providers in browser ($provider_url)" | |
provider_url="$core_url+label:\"pluggable providers\"+$milestone" | |
open_url "$provider_url" "Opening pluggable providers in browser ($provider_url)" | |
} | |
function open_external_prs() { | |
org="$1" | |
pr_uri="$2" | |
milestone="$3" | |
EXTERNAL_PROVIDERS=( amazon azure lenovo vmware openstack ovirt hawkular kubernetes openshift ) | |
EXTERNAL_DATE="" | |
if [ "x$external_date" != "x" ]; then | |
EXTERNAL_DATE="merged:>$external_date" | |
fi | |
for provider in "${EXTERNAL_PROVIDERS[@]}"; do | |
provider_url="$org/manageiq-providers-$provider/$pr_uri+$milestone" | |
open_url "$provider_url" "Opening manageiq-providers-$provider in browser ($provider_url)" | |
done | |
} | |
function open_pr_browsers() | |
{ | |
if [ "x$state" == "x" ]; then | |
state="$DEFAULT_STATE" | |
fi | |
if [ "$state" != "open" ] && [ "x$milestone" == "x" ]; then | |
error="Please provide a milestone. | |
e.g., $0 -m \"Sprint 45 Ending Aug 22, 2016\" | |
Use $0 -l to list milestones | |
" | |
echo "$error" | |
exit 1 | |
fi | |
MILESTONE="" | |
if [ "x$milestone" != "x" ]; then | |
MILESTONE="milestone:\"$milestone\"" | |
echo "using milestone $MILESTONE" | |
fi | |
GITHUB="https://github.com" | |
ORG="$GITHUB/ManageIQ" | |
PR_URI="pulls?utf8=✓&q=is:$state+is:pr" | |
CORE_URL="$ORG/manageiq/$PR_URI" | |
PROVIDERS_URL="$CORE_URL+label:providers" | |
if [ "x$provider" != "x" ]; then | |
provider_url="$PROVIDERS_URL/$provider+$MILESTONE" | |
open_url "$provider_url" "Opening $provider in browser ($provider_url)" | |
else | |
open_core_prs "$CORE_URL" "$PROVIDERS_URL" "$MILESTONE" | |
open_external_prs "$ORG" "$PR_URI" "$MILESTONE" | |
fi | |
} | |
action=open_pr_browsers | |
while getopts :m:s:d:lhp: opt; do | |
case $opt in | |
m) | |
milestone="$OPTARG" | |
;; | |
s) | |
state="$OPTARG" | |
;; | |
d) | |
external_date="$OPTARG" | |
;; | |
l) | |
action=list_milestones | |
;; | |
p) | |
provider="$OPTARG" | |
;; | |
h) | |
usage | |
exit 0 | |
;; | |
esac | |
done | |
$action |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment