You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.9 KiB
72 lines
1.9 KiB
/*
|
|
* Copyright (c) 2021-2024, Arm Limited. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
/* eslint-env es6 */
|
|
|
|
"use strict";
|
|
|
|
import fs from "fs";
|
|
import rules from "@commitlint/rules";
|
|
import yaml from "js-yaml";
|
|
|
|
/*
|
|
* The types and scopes accepted by both Commitlint and Commitizen are defined by the changelog
|
|
* configuration file - `changelog.yaml` - as they decide which section of the changelog commits
|
|
* with a given type and scope are placed in.
|
|
*/
|
|
|
|
let changelog;
|
|
|
|
try {
|
|
const contents = fs.readFileSync("changelog.yaml", "utf8");
|
|
|
|
changelog = yaml.load(contents);
|
|
} catch (err) {
|
|
console.log(err);
|
|
|
|
throw err;
|
|
}
|
|
|
|
function getTypes(sections) {
|
|
return sections.map(section => section.type)
|
|
}
|
|
|
|
function getScopes(subsections) {
|
|
return subsections.flatMap(subsection => {
|
|
const scope = subsection.scope ? [subsection.scope] : [];
|
|
const subscopes = getScopes(subsection.subsections || []);
|
|
|
|
return scope.concat(subscopes);
|
|
})
|
|
};
|
|
|
|
const types = getTypes(changelog.sections).sort(); /* Sort alphabetically */
|
|
const scopes = getScopes(changelog.subsections).sort(); /* Sort alphabetically */
|
|
|
|
export default {
|
|
extends: ["@commitlint/config-conventional"],
|
|
plugins: [
|
|
{
|
|
rules: {
|
|
"signed-off-by-exists": rules["trailer-exists"],
|
|
"change-id-exists": rules["trailer-exists"],
|
|
},
|
|
},
|
|
],
|
|
rules: {
|
|
"header-max-length": [1, "always", 50], /* Warning */
|
|
"body-max-line-length": [1, "always", 72], /* Warning */
|
|
|
|
"change-id-exists": [1, "always", "Change-Id:"], /* Warning */
|
|
"signed-off-by-exists": [1, "always", "Signed-off-by:"], /* Warning */
|
|
|
|
"type-case": [2, "always", "lower-case"], /* Error */
|
|
"type-enum": [2, "always", types], /* Error */
|
|
|
|
"scope-case": [2, "always", "lower-case"], /* Error */
|
|
"scope-enum": [1, "always", scopes] /* Warning */
|
|
},
|
|
};
|
|
|