123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- 'use strict'
- const parser = require('./lib/parser')
- const regex = require('./lib/regex')
- const through = require('through2')
- const _ = require('lodash')
- function assignOpts (options) {
- options = _.extend({
- headerPattern: /^(\w*)(?:\(([\w$.\-*/ ]*)\))?: (.*)$/,
- headerCorrespondence: ['type', 'scope', 'subject'],
- referenceActions: [
- 'close',
- 'closes',
- 'closed',
- 'fix',
- 'fixes',
- 'fixed',
- 'resolve',
- 'resolves',
- 'resolved'
- ],
- issuePrefixes: ['#'],
- noteKeywords: ['BREAKING CHANGE', 'BREAKING-CHANGE'],
- fieldPattern: /^-(.*?)-$/,
- revertPattern: /^Revert\s"([\s\S]*)"\s*This reverts commit (\w*)\./,
- revertCorrespondence: ['header', 'hash'],
- warn: function () {},
- mergePattern: null,
- mergeCorrespondence: null
- }, options)
- if (typeof options.headerPattern === 'string') {
- options.headerPattern = new RegExp(options.headerPattern)
- }
- if (typeof options.headerCorrespondence === 'string') {
- options.headerCorrespondence = options.headerCorrespondence.split(',')
- }
- if (typeof options.referenceActions === 'string') {
- options.referenceActions = options.referenceActions.split(',')
- }
- if (typeof options.issuePrefixes === 'string') {
- options.issuePrefixes = options.issuePrefixes.split(',')
- }
- if (typeof options.noteKeywords === 'string') {
- options.noteKeywords = options.noteKeywords.split(',')
- }
- if (typeof options.fieldPattern === 'string') {
- options.fieldPattern = new RegExp(options.fieldPattern)
- }
- if (typeof options.revertPattern === 'string') {
- options.revertPattern = new RegExp(options.revertPattern)
- }
- if (typeof options.revertCorrespondence === 'string') {
- options.revertCorrespondence = options.revertCorrespondence.split(',')
- }
- if (typeof options.mergePattern === 'string') {
- options.mergePattern = new RegExp(options.mergePattern)
- }
- return options
- }
- function conventionalCommitsParser (options) {
- options = assignOpts(options)
- const reg = regex(options)
- return through.obj(function (data, enc, cb) {
- let commit
- try {
- commit = parser(data.toString(), options, reg)
- cb(null, commit)
- } catch (err) {
- if (options.warn === true) {
- cb(err)
- } else {
- options.warn(err.toString())
- cb(null, '')
- }
- }
- })
- }
- function sync (commit, options) {
- options = assignOpts(options)
- const reg = regex(options)
- return parser(commit, options, reg)
- }
- module.exports = conventionalCommitsParser
- module.exports.sync = sync
|