diff --git a/@commitlint/core/src/rules/subject-case.js b/@commitlint/core/src/rules/subject-case.js index 09544708cf..84177a4c7a 100644 --- a/@commitlint/core/src/rules/subject-case.js +++ b/@commitlint/core/src/rules/subject-case.js @@ -1,18 +1,32 @@ import ensureCase from '../library/ensure-case'; import message from '../library/message'; +const negated = when => when === 'never'; + export default (parsed, when, value) => { const {subject} = parsed; - if (!subject) { + if (typeof subject !== 'string') { return [true]; } - const negated = when === 'never'; + const checks = (Array.isArray(value) ? value : [value]).map(check => { + if (typeof check === 'string') { + return { + when: 'always', + case: check + }; + } + return check; + }); + + const result = checks.every(check => { + const r = ensureCase(subject, check.case); + return negated(check.when) ? !r : r; + }); - const result = ensureCase(subject, value); return [ - negated ? !result : result, + negated(when) ? !result : result, message([`subject must`, negated ? `not` : null, `be ${value}`]) ]; };