くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

GitHubのラベルをAPIで簡単セットアップするシェルスクリプト

GitHubのラベル、いつも手でセットアップしていたけど、GithHub APIでできそう♪
いろいろ調べたときの備忘録

f:id:wannabe-jellyfish:20190727073308p:plain

スクリプト

スクリプトはこちら。冒頭のTODO_系は適宜、設定ください〜

#!/bin/bash

USER="TODO_YOUR_USER_NAME"
TOKEN="TODO_YOUR_GITHUB_TOKEN"
OWNER="TODO_OWNER_NAME"
REPO="TODO_REPOSITORY_NAME"

#############################
# VARIABLES
#############################
URL="https://api.github.com/repos/${OWNER}/${REPO}/labels"
OPT="-u ${USER}:${TOKEN}"

#############################
# FUNCTION
#############################

# url encode
function urlencode {
  echo "$1" | nkf -WwMQ | sed 's/=$//g' | tr = % | tr -d '\n'
}

# get labels
function getLabels() {
  echo "### getLabels"
  curl ${URL} ${OPT}
} 

# delete labels
function deleteLabel() {
  name=`urlencode "$1"`
  echo "### deleteLabel: name=${name}"
  curl -X DELETE "${URL}/${name}" $OPT
}

# add labels
function addLabel() {
  name=`urlencode "$1"`
  color=`urlencode "$2"`
  data='{"name":"'$name'","color":"'$color'"}'
  echo "### addLabel: data=${data}"
  curl -X POST ${URL} ${OPT} \
  -H "Accept: application/json" -H "Content-type: application/json" \
  -d $data
}

# update labels
function updateLabel() {
  old_name=`urlencode "$1"`
  new_name=`urlencode "$2"`
  new_color=`urlencode "$3"`
  data='{"name":"'$new_name'","color":"'$new_color'"}'
  echo "### updateLabel: oldName=${old_name}, data=${data}"
  curl -X PATCH "${URL}/${old_name}" ${OPT} \
  -H "Accept: application/json" -H "Content-type: application/json" \
  -d $data
}

#############################
# MAIN
#############################

# GET ALL LABELS
getLabels

# ADD LABEL
addLabel "request" "ff00ff" 

# UPADATE LABEL
updateLabel "request" "要望" "0365D6" 

# DELETE LABEL
deleteLabel "要望"

Tips: デフォルトのラベルを全部消す

# DELETE LABEL
deleteLabel "bug"
deleteLabel "duplicate"
deleteLabel "enhancement"
deleteLabel "good first issue"
deleteLabel "help wanted"
deleteLabel "invalid"
deleteLabel "question"
deleteLabel "wontfix"

Tips: お気に入りのラベル

# DELETE LABEL
deleteLabel "good first issue"
deleteLabel "help wanted"
deleteLabel "question"

# UPDATE LABEL
updateLabel "bug" "bug" "d73a4a"
updateLabel "enhancement" "feature" "0365D6"

# ADD LABEL
addLabel "refactor" "008672"

以上!

おまけ: トークンの取得方法

「Setting」をクリック f:id:wannabe-jellyfish:20190727073357p:plain

「Developer Settings」をクリック f:id:wannabe-jellyfish:20190727073410p:plain

「Personal access tokens」をクリック f:id:wannabe-jellyfish:20190727073539p:plain

「Generate new token」をクリック f:id:wannabe-jellyfish:20190727073650p:plain

「Note」に説明を適当に説明を書いて、「Generate token」をクリック
ラベルを操作するには「repo」権限すべてが必要っぽい。 f:id:wannabe-jellyfish:20190727073813p:plain

トークンが表示されるのでコピーしておく! f:id:wannabe-jellyfish:20190727073953p:plain

以上!!

参考にしたサイト様