1- import {
2- danger ,
3- fail ,
4- type GitHubPRDSL as LibraryGitHubDSL ,
5- GitHubMergeRef ,
6- GitHubRepo ,
7- GitHubDSL
8- } from 'danger' ;
1+ import { type GitHubPRDSL as LibraryGitHubDSL , danger , fail } from 'danger' ;
92
103import { ProjectPrefix } from './project.config' ;
114
5+ const LABELS_EMPTY_LENGTH = 0 ;
6+
127type GitHubPRDSL = LibraryGitHubDSL & {
13- head : GitHubMergeRef & {
14- repo : GitHubRepo & {
15- has_projects : boolean ;
16- } ;
17- } ;
18- milestone : Record < string , unknown > | null ;
198 labels : unknown [ ] ;
20- project_id : string | null ;
9+ milestone : Record < string , unknown > | null ;
10+ project_id : null | string ;
2111} ;
2212
23- const BranchPrefix = {
24- TASK : 'task' ,
25- FIX : 'fix'
26- } as const ;
27-
28- const DangerConfig = {
13+ type DangerConfig = {
14+ ASSIGNEES : {
15+ IS_REQUIRED : boolean ;
16+ } ;
17+ BRANCH : {
18+ PATTERN : RegExp | null ;
19+ } ;
20+ LABELS : {
21+ IS_REQUIRED : boolean ;
22+ } ;
23+ MILESTONE : {
24+ IS_REQUIRED : boolean ;
25+ } ;
2926 TITLE : {
30- IS_REQUIRED : true ,
27+ PATTERN : RegExp | null ;
28+ } ;
29+ } ;
30+
31+ const config : DangerConfig = {
32+ ASSIGNEES : {
33+ IS_REQUIRED : true
34+ } ,
35+ BRANCH : {
3136 PATTERN : new RegExp (
32- `^((${
33- ProjectPrefix . APP
34- } )-[0-9]{1,6}): (.*\\S)$|(${ ProjectPrefix . ENVIRONMENTS . join (
35- '|'
36- ) } ) to (${ ProjectPrefix . ENVIRONMENTS . join ( '|' ) } )$`
37+ `^[0-9]{1,6}-${ ProjectPrefix . CHANGE_TYPES . join ( '|' ) } -[a-zA-Z0-9-]+$|(${ ProjectPrefix . ENVIRONMENTS . join ( '|' ) } )$`
3738 )
3839 } ,
39- ASSIGNEES : {
40+ LABELS : {
4041 IS_REQUIRED : true
4142 } ,
42- LABELS : {
43+ MILESTONE : {
4344 IS_REQUIRED : true
4445 } ,
45- BRANCH : {
46- IS_REQUIRED : true ,
46+ TITLE : {
4747 PATTERN : new RegExp (
48- `^((${ Object . values ( BranchPrefix ) . join ( '|' ) } )/(${
49- ProjectPrefix . APP
50- } )-[0-9]{1,6})-[a-zA-Z0-9-]+$|(${ ProjectPrefix . ENVIRONMENTS . join ( '|' ) } )$`
48+ `^(${ ProjectPrefix . CHANGE_TYPES . join ( '|' ) } )(\\((${ ProjectPrefix . SCOPES . APPS . join ( '|' ) } |${ ProjectPrefix . SCOPES . PACKAGES . join ( '|' ) } )(\\/(${ ProjectPrefix . SCOPES . APPS . join ( '|' ) } |${ ProjectPrefix . SCOPES . PACKAGES . join ( '|' ) } ))*\\))?: (.*\\S )?(${ ProjectPrefix . ISSUE_PREFIXES . join ( '|' ) } )-[0-9]{1,6}((\\.[0-9]+){1,2})?$`
5149 )
5250 }
5351} ;
5452
55- const { pr } = danger . github as GitHubDSL & Record < 'pr' , GitHubPRDSL > ;
53+ const pr = danger . github . pr as GitHubPRDSL ;
5654
5755const checkAssignees = ( ) : void => {
5856 const hasAssignees = Boolean ( pr . assignee ) ;
@@ -75,7 +73,7 @@ const checkTitle = (titlePattern: RegExp): void => {
7573} ;
7674
7775const checkLabels = ( ) : void => {
78- const hasLabels = pr . labels . length > 0 ;
76+ const hasLabels = pr . labels . length > LABELS_EMPTY_LENGTH ;
7977
8078 if ( ! hasLabels ) {
8179 fail ( 'This pull request should have at least one label.' ) ;
@@ -95,20 +93,20 @@ const checkBranch = (branchPattern: RegExp): void => {
9593} ;
9694
9795const applyDanger = ( ) : void => {
98- if ( DangerConfig . TITLE . IS_REQUIRED ) {
99- checkTitle ( DangerConfig . TITLE . PATTERN ) ;
96+ if ( config . TITLE . PATTERN ) {
97+ checkTitle ( config . TITLE . PATTERN ) ;
10098 }
10199
102- if ( DangerConfig . ASSIGNEES . IS_REQUIRED ) {
100+ if ( config . ASSIGNEES . IS_REQUIRED ) {
103101 checkAssignees ( ) ;
104102 }
105103
106- if ( DangerConfig . LABELS . IS_REQUIRED ) {
104+ if ( config . LABELS . IS_REQUIRED ) {
107105 checkLabels ( ) ;
108106 }
109107
110- if ( DangerConfig . BRANCH . IS_REQUIRED ) {
111- checkBranch ( DangerConfig . BRANCH . PATTERN ) ;
108+ if ( config . BRANCH . PATTERN ) {
109+ checkBranch ( config . BRANCH . PATTERN ) ;
112110 }
113111} ;
114112
0 commit comments