Skip to content

Instantly share code, notes, and snippets.

@bw-matthew
Forked from qubyte/replace-labels.js
Last active February 7, 2017 15:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bw-matthew/52905ba80c6eff546edb6df7fde45eb6 to your computer and use it in GitHub Desktop.
Save bw-matthew/52905ba80c6eff546edb6df7fde45eb6 to your computer and use it in GitHub Desktop.
Replace labels for a repo with standard set.
var token = '<insert token>';
var owner = '<insert owner>';
var repo = '<insert repo>';
var newLabels = [
{color: 'e10c02', name: 'Don\'t merge'},
{color: '3ad5e0', name: 'Passed QA'},
{color: '207de5', name: 'Passed review'},
{color: '02e10c', name: 'Waiting for branch'},
{color: 'eb6420', name: 'Waiting for QA'},
{color: 'fbca04', name: 'Waiting for review'},
{color: '5319e7', name: 'Waiting for submitter'},
{color: 'e10c02', name: 'WIP'}
];
var labelsUrl = `https://api.github.com/repos/${owner}/${repo}/labels`;
function makeHeaders(extras) {
return Object.assign({}, {'user-agent': 'node', Authorization: `token ${token}`}, extras);
}
function getOldLabels() {
var requestOptions = {
headers: makeHeaders({Accept: 'application/json'})
};
return fetch(labelsUrl, requestOptions).then(res => res.json());
}
function deleteOldLabels(labels) {
var requestOptions = {
method: 'delete',
headers: makeHeaders()
};
return Promise.all(labels.map(label => fetch(label.url, requestOptions)));
}
function createNewLabels(labels) {
return Promise.all(labels.map(label => fetch(labelsUrl, {
method: 'post',
body: JSON.stringify(label),
headers: makeHeaders({'content-type': 'application/json'})
})));
}
getOldLabels()
.then(deleteOldLabels)
.then(() => createNewLabels(newLabels));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment