Skip to content

Instantly share code, notes, and snippets.

@shaneog
Forked from omegahm/create_labels.sh
Last active August 29, 2015 14:22
Show Gist options
  • Save shaneog/ff04456508cf2050c3a0 to your computer and use it in GitHub Desktop.
Save shaneog/ff04456508cf2050c3a0 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
# Colours picked from https://robinpowered.com/blog/best-practice-system-for-organizing-and-tagging-github-issues/
###
# Label definitions
###
declare -A LABELS
# Platform
LABELS["ruby"]="BFD4F2"
# LABELS["rails"]="BFD4F2"
LABELS["javascript"]="BFD4F2"
LABELS["html-css"]="BFD4F2"
# Problems
LABELS["bug"]="EE3F46"
LABELS["security"]="EE3F46"
# LABELS["production"]="F45D43"
LABELS["admin"]="F45D43"
# Mindless
LABELS["chore"]="FEF2C0"
# LABELS["legal"]="FFF2C1"
# Experience
LABELS["copy"]="FFC274"
LABELS["design"]="FFC274"
LABELS["ux"]="FFC274"
# Environment
LABELS["staging"]="FAD8C7"
# LABELS["test"]="FAD8C7"
# Feedback
LABELS["discussion"]="CC317C"
LABELS["rfc"]="CC317C"
LABELS["question"]="CC317C"
# Improvements
LABELS["enhancement"]="5EBEFF"
LABELS["optimization"]="5EBEFF"
LABELS["documentation"]="5EBEFF"
LABELS["performance"]="5EBEFF"
# Additions
LABELS["feature"]="91CA55"
# Pending
LABELS["in progress"]="FBCA04"
LABELS["watchlist"]="FBCA04"
LABELS["in review"]="009800"
# Blocked
LABELS["blocked"]="000000"
# Inactive
LABELS["invalid"]="D2DAE1"
LABELS["wontfix"]="D2DAE1"
LABELS["duplicate"]="D2DAE1"
# On hold
LABELS["on hold"]="AFAFAF"
# Technical Debt
LABELS["technical debt"]="5319E7"
###
# Get a token from Github
###
if [ ! -f ".token" ]; then
read -p "Please enter your Github username: " user
read -p "Please enter your 6 digit two-factor-authentication code: " otp_code
curl -u "$user" -H "X-Github-OTP: $otp_code" -d '{"scopes":["repo", "public_repo"], "note":"Creating Labels"}' "https://api.github.com/authorizations" | jq -r '.token' > .token
fi
TOKEN=$(cat .token)
read -p "Who owns the repo you want labels on?: " owner
read -p "What repo do you want labels on?: " repo
for K in "${!LABELS[@]}"; do
CURL_OUTPUT=$(curl -s -H "Authorization: token $TOKEN" -X POST "https://api.github.com/repos/$owner/$repo/labels" -d "{\"name\":\"$K\", \"color\":\"${LABELS[$K]}\"}")
HAS_ERROR=$(echo "$CURL_OUTPUT" | jq -r '.errors')
if [[ (! -z "$HAS_ERROR") && !("$HAS_ERROR" == "null") ]]; then
ERROR=$(echo "$CURL_OUTPUT" | jq -r '.errors[0].code')
if [ "$ERROR" == "already_exists" ]; then
# We update
echo "'$K' already exists. Updating..."
CURL_OUTPUT=$(curl -s -H "Authorization: token $TOKEN" -X PATCH "https://api.github.com/repos/$owner/$repo/labels/${K/ /%20}" -d "{\"name\":\"$K\", \"color\":\"${LABELS[$K]}\"}")
else
echo "Unknown error: $ERROR"
echo "Output from curl: "
echo "$CURL_OUTPUT"
echo "Exiting..."
exit;
fi
else
echo "Created '$K'."
fi
done
@vnegrisolo
Copy link

I agree with a lot of things all you guys mentioned. About our tool we have to remember that we are going to be forced to use milestones and this is also visible.
About the labels in the workflow, in issues and pull requests, the tool add labels to mark the process. But I think that we have to run one week with the new tool to check how the things are going to happen.
Shane I think that you should to implement the things discussed to test on the next week. 👍

@shaneog
Copy link
Author

shaneog commented Jun 5, 2015

Will do 👍

@brennovich
Copy link

Awesome! @shaneog sumarized everything regading labels. Regarding PRs, I agree when you said labels aren't helping, also agree with [WIP] convention, not sure about :+1:, tought

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment