feat(dev-infra): migrate to unified commit message types in commit message linting (#38430)

Previously commit message types were provided as part of the ng-dev config in the repository
using the ng-dev toolset.  This change removes this configuration expectation and instead
predefines the valid types for commit messages.

Additionally, with this new unified set of types requirements around providing a scope have
been put in place.  Scopes are either required, optional or forbidden for a given commit
type.

PR Close #38430
This commit is contained in:
Joey Perrott
2020-08-12 09:36:59 -07:00
committed by Andrew Scott
parent 773f7908c0
commit 9f7a37b4e9
3 changed files with 76 additions and 23 deletions

View File

@ -12,7 +12,6 @@ export interface CommitMessageConfig {
maxLineLength: number;
minBodyLength: number;
minBodyLengthTypeExcludes?: string[];
types: string[];
scopes: string[];
}
@ -30,3 +29,46 @@ export function getCommitMessageConfig() {
assertNoErrors(errors);
return config as Required<typeof config>;
}
/** Scope requirement level to be set for each commit type. */
export enum ScopeRequirement {
Required,
Optional,
Forbidden,
}
/** A commit type */
export interface CommitType {
scope: ScopeRequirement;
}
/** The valid commit types for Angular commit messages. */
export const COMMIT_TYPES: {[key: string]: CommitType} = {
build: {
scope: ScopeRequirement.Forbidden,
},
ci: {
scope: ScopeRequirement.Forbidden,
},
docs: {
scope: ScopeRequirement.Optional,
},
feat: {
scope: ScopeRequirement.Required,
},
fix: {
scope: ScopeRequirement.Required,
},
perf: {
scope: ScopeRequirement.Required,
},
refactor: {
scope: ScopeRequirement.Required,
},
release: {
scope: ScopeRequirement.Forbidden,
},
test: {
scope: ScopeRequirement.Required,
},
};