contributors
Version:
Generate a Markdown list of contributors to your GitHub repository.
53 lines (43 loc) • 1.09 kB
JavaScript
var exec = require('child_process').exec
, uniq = require('lodash.uniq')
var LogStream = require('./log_stream')
exports.authors = function (dir, callback) {
var emails = []
, names = {}
var standardError
var log = exec('git log --pretty="%an <%ae>"', { cwd: dir })
.once('error', function (err) {
callback(err)
})
.once('close', function () {
if (standardError) {
return callback(errorException(standardError, 'GITError'))
}
var authors = uniq(emails)
.map(function (email) {
return {
name: names[email]
, email: email
}
})
callback(null, authors)
})
log.stdout.pipe(new LogStream())
.on('data', function (author) {
emails.unshift(author.email)
names[author.email] = author.name
})
.once('error', function (err) {
callback(err)
})
log.stderr.setEncoding('utf8')
log.stderr.once('data', function (err) {
standardError = err
log.kill()
})
}
function errorException(message, code) {
var e = new Error(message)
if (code) e.name = e.code = e.errno = code
return e
}