32 lines
897 B
TypeScript
32 lines
897 B
TypeScript
import { execSync } from "node:child_process";
|
|
import { readdirSync } from "node:fs";
|
|
import { dirname, join } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
import type { UserConfig } from "cz-git";
|
|
|
|
const packages = readdirSync(
|
|
join(dirname(fileURLToPath(import.meta.url)), "./packages/"),
|
|
);
|
|
|
|
const scopeComplete = execSync("git status --porcelain || true")
|
|
.toString()
|
|
.trim()
|
|
.split("\n")
|
|
.find((r) => ~r.indexOf("M packages"))
|
|
?.replace(/\//g, "%%")
|
|
?.match(/packages%%((\w|-)*)/)?.[1];
|
|
|
|
export default {
|
|
extends: ["@commitlint/config-conventional"],
|
|
rules: {
|
|
"scope-enum": [2, "always", ["demo", "release", ...packages]],
|
|
},
|
|
prompt: {
|
|
defaultScope: scopeComplete,
|
|
customScopesAlign: !scopeComplete ? "top" : "bottom",
|
|
allowCustomIssuePrefix: false,
|
|
allowEmptyIssuePrefix: false,
|
|
},
|
|
} as UserConfig;
|