Skip to content

Commit 5ec1358

Browse files
z825316969youncccat
authored andcommitted
[Add::rules] add breakChangeSymbol rules
1 parent 248a8b4 commit 5ec1358

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { RuleResolver } from "./typings";
2+
import { breakChangeSymbol } from "./constants";
3+
4+
const breakChangeSymbolRuleResolver: RuleResolver = (
5+
parsed,
6+
_when,
7+
value = breakChangeSymbol
8+
) => {
9+
const rawCommitMessage = parsed.raw;
10+
if (!rawCommitMessage) return [false, "Commit message should not be empty"];
11+
12+
let isRuleValid = false;
13+
14+
const findedBreakChangeSymbol: string = rawCommitMessage.split("[")[0];
15+
16+
// 查找[ 前一项
17+
if (!findedBreakChangeSymbol || findedBreakChangeSymbol === value)
18+
isRuleValid = true;
19+
20+
return [
21+
isRuleValid,
22+
`break change must be symbol with "${value}" e.g: ${value}[Type::scope] subject`,
23+
];
24+
};
25+
export default breakChangeSymbolRuleResolver;
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import breakChangeSymbolRuleResolver from "../break-change-symbol-rule-resolver";
2+
3+
describe("breakChangeSymbolRuleResolver", () => {
4+
it("should return a error response if breakChangeSymbol is not !", () => {
5+
const parsed = {
6+
raw: "$[Type::scope] subject",
7+
};
8+
expect(breakChangeSymbolRuleResolver(parsed)[0]).toEqual(false);
9+
});
10+
it("should return a success response if no breakChangeSymbol", () => {
11+
const parsed = {
12+
raw: "[Type::scope] subject",
13+
};
14+
expect(breakChangeSymbolRuleResolver(parsed)[0]).toEqual(true);
15+
});
16+
it("should return a success response if breakChangeSymbol is !", () => {
17+
const parsed = {
18+
raw: "![Type::scope] subject",
19+
};
20+
expect(breakChangeSymbolRuleResolver(parsed)[0]).toEqual(true);
21+
});
22+
});
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
export type RuleResolver = (
2+
parsed: Partial<{
3+
type: string;
4+
scope: string;
5+
subject: string;
6+
merge: string;
7+
header: string;
8+
body: string;
9+
footer: string;
10+
notes: string[];
11+
references: string[];
12+
mentions: string[];
13+
revert: string;
14+
raw: string;
15+
}>,
16+
when?: string,
17+
value?: string | number | boolean | (string | number)[]
18+
) => (string | boolean)[];
19+
20+
export interface CommitlintPlugin {
21+
rules: {
22+
[key: string]: RuleResolver;
23+
};
24+
}
25+
declare const commitlintPlugin: CommitlintPlugin;
26+
27+
export default commitlintPlugin;

0 commit comments

Comments
 (0)