Skip to content

Instantly share code, notes, and snippets.

@ForbesLindesay
Created April 22, 2014 14:49
Show Gist options
  • Save ForbesLindesay/11182125 to your computer and use it in GitHub Desktop.
Save ForbesLindesay/11182125 to your computer and use it in GitHub Desktop.
'use strict';
var github = require('github-basic');
var pr = require('pull-request');
var USER = '<YOUR GITHUB USERNAME HERE>';
var TOKEN = '<YOUR GITHUB TOKEN HERE>';
var README_FILE = 'README.md';
var auth = { type: 'oauth', token: TOKEN };
github.stream('/users/:user/repos', {user: USER}, {auth: auth}).on('data', function (repo) {
fixRepo(repo.full_name.split('/')[0], repo.full_name.split('/')[1], README_FILE).done(function (fixed) {
if (fixed) console.log('fixed: ' + repo.full_name);
else console.log('skipd: ' + repo.full_name);
}, function (err) {
console.error('error: ' + repo.full_name);
console.error(err.stack);
});
});
function fixRepo(user, repo, readme) {
return github.buffer('GET', '/:user/:repo/master/' + readme, {
user: user,
repo: repo
}, {
auth: auth,
host: 'raw.githubusercontent.com'
}).then(function (res) {
var before = res.body.toString();
var after = before;
after = after.replace(/\(https\:\/\/travis-ci.org\/([^\/]+)\/([^\/]+)\.png\?branch\=([^\/\)]+)\)/g,
'(https://img.shields.io/travis/$1/$2/$3.svg)');
after = after.replace(/\(https\:\/\/travis-ci.org\/([^\/]+)\/([^\/]+)\.png\)/g,
'(https://img.shields.io/travis/$1/$2/master.svg)');
after = after.replace(/\(https\:\/\/gemnasium.com\/([^\/]+)\/([^\/]+)\.png\)/g,
'(https://img.shields.io/gemnasium/$1/$2.svg)');
after = after.replace(/\(https\:\/\/badge.fury.io\/js\/([^\/]+)\.png\)/g,
'(https://img.shields.io/npm/v/$1.svg)');
if (after !== before) {
return pr.commit(user, repo, {
message: 'Use http://shields.io for README badges.',
updates: [
{
path: readme,
content: after
}
]
}, {auth: auth}).then(function () {
return true;
})
} else {
return false;
}
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment