@@ -59,7 +59,27 @@ def __init__(self, user, repository, client):
59
59
self .rules ['mergedelay' ] = self .rules ['mergedelay' ] * 24
60
60
if 'timeout' in self .rules and self .rules ['timeout' ]:
61
61
self .rules ['timeout' ] = self .rules ['timeout' ] * 24
62
-
62
+ self .rules ['version' ] = 2
63
+
64
+ if self .rules ['version' ] < 3 :
65
+ self .rules ['version' ] = 3
66
+ self .rules ['pull_requests' ] = {
67
+ "quorum" : self .rules .get ('quorum' , False ),
68
+ "threshold" : self .rules .get ('threshold' , False ),
69
+ "contributors_only" : self .rules .get ('contributorsonly' , False ),
70
+ "collaborators_only" : self .rules .get ('collaboratorsonly' , False ),
71
+ "whitelist" : self .rules .get ('whitelist' ),
72
+ "blacklist" : self .rules .get ('blacklist' ),
73
+ "merge_delay" : self .rules .get ('mergedelay' , False ),
74
+ "delay_override" : self .rules .get ('delayoverride' , False ),
75
+ "merge_delay_min" : self .rules .get ('mergedelaymin' , False ),
76
+ "license_delay" : self .rules .get ('licenseddelay' , False ),
77
+ "license_lock" : self .rules .get ('locklicense' , False ),
78
+ "consensus_delay" : self .rules .get ('consensusdelay' , False ),
79
+ "consensus_lock" : self .rules .get ('lockconsensus' , False ),
80
+ "timeout" : self .rules .get ('timeout' )
81
+ }
82
+ print (self .rules )
63
83
64
84
def getPullRequests (self ):
65
85
prs = self .repository .iter_pulls (state = "open" )
@@ -380,10 +400,10 @@ def validate(self, pr):
380
400
381
401
def isAllowed (self , pr ):
382
402
if pr .changesLicense ():
383
- if 'locklicense ' in self .rules and self .rules ['locklicense ' ]:
403
+ if 'license_lock ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'license_lock ' ]:
384
404
return False
385
405
if pr .changesConsensus ():
386
- if 'lockconsensus ' in self .rules and self .rules ['lockconsensus ' ]:
406
+ if 'consensus_lock ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'consensus_lock ' ]:
387
407
return False
388
408
return True
389
409
@@ -393,43 +413,43 @@ def isMergeable(self, pr):
393
413
return True
394
414
395
415
def hasQuorum (self , pr ):
396
- if 'quorum' in self .rules :
397
- if len (pr .users ) < self .rules ['quorum' ]:
416
+ if 'quorum' in self .rules [ 'pull_requests' ] :
417
+ if len (pr .users ) < self .rules ['pull_requests' ][ ' quorum' ]:
398
418
return False
399
419
return True
400
420
401
421
def hasVotes (self , pr ):
402
- if 'threshold' in self .rules :
422
+ if 'threshold' in self .rules [ 'pull_requests' ] :
403
423
total = (len (pr .yes ) + len (pr .no ))
404
424
if total <= 0 :
405
425
return False
406
426
ratio = len (pr .yes ) / total
407
- if ratio < self .rules ['threshold' ]:
427
+ if ratio < self .rules ['pull_requests' ][ ' threshold' ]:
408
428
return False
409
429
return True
410
430
411
431
def hasAged (self , pr ):
412
432
hours = pr .hoursSinceLastUpdate ()
413
433
if pr .changesLicense ():
414
- if 'licensedelay ' in self .rules and self .rules ['licensedelay ' ]:
415
- if hours < self .rules ['licensedelay ' ]:
434
+ if 'license_delay ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'license_delay ' ]:
435
+ if hours < self .rules ['pull_requests' ][ 'license_delay ' ]:
416
436
return False
417
437
if pr .changesConsensus ():
418
- if 'consensusdelay ' in self .rules and self .rules ['consensusdelay ' ]:
419
- if hours < self .rules ['consensusdelay ' ]:
438
+ if 'consensus_delay ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'consensus_delay ' ]:
439
+ if hours < self .rules ['pull_requests' ][ 'consensus_delay ' ]:
420
440
return False
421
- if 'mergedelay ' not in self .rules :
441
+ if 'merge_delay ' not in self .rules [ 'pull_requests' ] or not self . rules [ 'pull_requests' ][ 'merge_delay' ] :
422
442
return True
423
- if hours >= self .rules ['mergedelay ' ]:
443
+ if hours >= self .rules ['pull_requests' ][ 'merge_delay ' ]:
424
444
return True
425
- if 'delayoverride ' in self .rules and self .rules ['delayoverride ' ]:
445
+ if 'delay_override ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'delay_override ' ]:
426
446
if pr .changesConsensus () or pr .changesLicense ():
427
447
return False
428
- if 'mergedelaymin ' in self .rules and self .rules ['mergedelaymin ' ]:
429
- if hours < self .rules ['mergedelaymin ' ]:
448
+ if 'merge_delay_min ' in self .rules [ 'pull_requests' ] and self .rules ['pull_requests' ][ 'merge_delay_min ' ]:
449
+ if hours < self .rules ['pull_requests' ][ 'merge_delay_min ' ]:
430
450
return False
431
451
if len (pr .no ) > 0 :
432
452
return False
433
- if len (pr .contributors_yes ) >= self .rules ['delayoverride ' ]:
453
+ if len (pr .contributors_yes ) >= self .rules ['pull_requests' ][ 'delay_override ' ]:
434
454
return True
435
455
return False
0 commit comments