UNPKG

changed-log

Version:

Returns all commit messages between 2 versions of an NPM module

111 lines (98 loc) 4.32 kB
var la = require('lazy-ass') var check = require('check-more-types') /* eslint no-console:0 */ var log = console.log.bind(console) var chalk = require('chalk') var pkg = require('../package.json') var utils = require('./utils') var _ = require('lodash') function Report (options) { // TODO validate options la(check.object(options), 'missing options') this.options = options this.ids = [] this.comments = [] this.allTags = [] } Report.prototype.tagForCommit = function tagForCommit (sha) { var report = this return _.find(report.allTags, 'sha', sha) } Report.prototype.print = function print (opts) { opts = opts || {} var report = this log('Changelog for module', chalk.underline(report.options.name), 'repo', chalk.underline(report.options.user + '/' + report.options.repo), 'from', report.options.from, 'to', report.options.to) la(report.ids.length === report.comments.length, 'mismatch in ids vs comments', report) report.ids.forEach(function (id, k) { var comment = report.comments[k] || '' if (!opts.details) { comment = utils.firstLine(comment) } var ownsTag = report.tagForCommit(id) if (ownsTag) { log('\n' + chalk.bold.underline(ownsTag.name)) } log(' ' + chalk.bold(utils.shortenSha(id)) + ': ' + comment) }) log('\nReport generated by %s %s', pkg.name, pkg.homepage) } module.exports = Report if (!module.parent) { (function sampleReport () { var report = new Report({ user: 'bahmutov', repo: 'next-update', name: 'next-update', from: '0.8.0', to: '0.8.3' }) report.ids = [ '89d437c4fe1178f120511ef43d6f6440956ba559', '2845b1bd6a8d32c38666ae98e40a16288711d56e', '3d2b1fa3523c0be35ecfb30d4c81407fd4ce30a6', 'a4eb79977600fc5d001617449a1874168b38d6c3' ] report.comments = [ 'Printing allowed type, fixes #59', 'filtering modules by type', 'Added CLI option --type to only check modules like prod,dev or peer. fixes #56', 'bump' ] report.allTags = [ { name: '0.0.12', sha: 'a343f9062999ae11418b2e1ee86d5f1776873a50' }, { name: '0.0.11', sha: '8b3141eeec82ab1c9bb1d0afd2814ab90736f295' }, { name: '0.0.10', sha: '839242c49ee1a4ede708937e8674f82c289a6860' }, { name: '0.0.9', sha: '53056481cca85bb94bc8e0c242d2ed8990062ed5' }, { name: '0.0.8', sha: 'a2cdf4406d0b5f412f4f68149671888c148d2dd2' }, { name: '0.0.7', sha: 'd87671041bb1010f842b7defc931210416b82ac2' }, { name: '0.0.6', sha: 'fede159c507d160ba548593097fa32cc2320f327' }, { name: '0.0.5', sha: '37d7d76ec3bcef6562ff7083c6c052d98f1435e3' }, { name: '0.0.4', sha: 'ebbd287cb3fb611430d8f2e6fcc299361d0ede5f' }, { name: '0.0.3', sha: '2c21af22ef1deda357834875504fdb3dff9245e2' }, { name: 'delete', sha: 'd5b122c1194703e8cea06630e7a008dd26b1c122' }, { name: '0.8.3', sha: '89d437c4fe1178f120511ef43d6f6440956ba559' }, { name: '0.8.2', sha: '3d2b1fa3523c0be35ecfb30d4c81407fd4ce30a6' }, { name: '0.8.1', sha: 'a4eb79977600fc5d001617449a1874168b38d6c3' }, { name: '0.8.0', sha: '627250039b89fba678f57f428ee9151c370d4dad' }, { name: '0.7.8', sha: 'be0a3e47ec56ec71feeae0b67437449d5b4481e0' }, { name: '0.7.7', sha: '43deb0f32a679f90d8b976555c99761e3dfea636' }, { name: '0.7.6', sha: 'a9086c59481b1e8ed643c4a1bd4caef63bce8908' }, { name: '0.7.5', sha: '8cb319afeb76288d1648ff0c09a43495bd80d401' }, { name: '0.7.4', sha: '40a0c115e9cd963d77b12a54dd576d15657e8f41' }, { name: '0.7.3', sha: 'fa4021a49f2a0810f3ee581f61cde5c18b3a1b64' }, { name: '0.7.2', sha: '9c2e697131d8e132b99b1f6364ecfe115c186a04' }, { name: '0.7.1', sha: '9253c0ee8b4bd37c528cafdff6be1c3696cd4fff' }, { name: '0.7.0', sha: '8f397568ad763803941c4d9d4587ea1354fdd6e4' }, { name: '0.6.0', sha: 'cd5fccfeb0baf9b490736022ff69fac743be3b4e' }, { name: '0.5.4', sha: '7dd8048e69fe33d2cdbbc1b214dd907b5cb52f19' }, { name: '0.5.3', sha: 'f19883a9a29d32649c9b6da7ed2ecfcfcdf5cbfc' }, { name: '0.5.2', sha: 'c0bdb2eefac5cc30ac69c744231d4c95c6f15f4b' }, { name: '0.5.1', sha: 'd29ebadbd38be26917a79f251f77f386dae4de7a' }, { name: '0.5.0', sha: '82747f3eff789b5ea8fade040735b2c11b116eb8' } ] report.print() }()) }