Skip to content

Commit

Permalink
Add find-commenters option to the script
Browse files Browse the repository at this point in the history
  • Loading branch information
ichernev committed Aug 31, 2016
1 parent 03a01d1 commit 20e74aa
Showing 1 changed file with 75 additions and 2 deletions.
77 changes: 75 additions & 2 deletions scripts/locales.js
@@ -1,15 +1,17 @@
var fs = require('fs'),
path = require('path');
path = require('path'),
https = require('https');

var localeDir = path.join('src', 'locale');

var args = process.argv.slice(2);

function help() {
console.log(process.argv[1], '[list]');
console.log(process.argv[1], '[list|mention|find-commenters] ARGS');
console.log();
console.log(" list show all authors in all locales");
console.log(" mention show all authors in all locales, ready to copy-paste in github issue");
console.log(" find-commenters #ID finds all people that participated in a github conversation");
}

function extract() {
Expand Down Expand Up @@ -56,6 +58,74 @@ function mention() {
});
}

function findCommenters(postId) {

function fetchComments(page, callback) {
var options = {
hostname: 'api.github.com',
port: 443,
path: '/repos/moment/moment/issues/' + postId + '/comments?page=' + page,
method: 'GET',
headers: {
'User-Agent': 'node script'
}
},
links = {};
console.log('fetching', options.path);
https.get(options, function (res) {
if ('link' in res.headers) {
res.headers.link.split(', ').forEach(function(linkStr) {
var pieces = linkStr.split('; ');
var key = pieces[1].split('=')[1];
var link = pieces[0];
key = key.substr(1, key.length - 2);
link = link.substr(1, link.length - 2);
links[key] = link;
});
}
var bodyChunks = [], body;
res.on('data', function (chunk) {
bodyChunks.push(chunk);
});
res.on('end', function () {
body = bodyChunks.join('');
callback(page, JSON.parse(body), links);
});
});
}

var commenters = {};
var maxPage = 1;
fetchComments(1, function (page, body, links) {
handleBody(body, page);
if ('last' in links) {
maxPage = parseInt(links.last.split('=')[1], 10);
}
var pagesLeft = maxPage - 1;
for (var p = 2; p <= maxPage; p += 1) {
fetchComments(p, function (page, body, links) {
handleBody(body, page);
pagesLeft -= 1;
if (pagesLeft === 0) {
handleCommenters(Object.keys(commenters));
}
});
}
});

function handleBody(body, page) {
body.forEach(function (comment) {
console.log(page, comment.user.login);
commenters[comment.user.login] = 1;
});
}

function handleCommenters(commenters) {
console.log('len of commenters', commenters.length);
console.log(commenters);
}
}

if (args.length === 0) {
help();
process.exit(0);
Expand All @@ -68,6 +138,9 @@ switch (args[0]) {
case 'mention':
mention();
break;
case 'find-commenters':
findCommenters(args[1]);
break;
default:
console.log("unknown argument", args[0]);
break;
Expand Down

0 comments on commit 20e74aa

Please sign in to comment.