9
9
10
10
Currently, it only supports PR and try builds.
11
11
"""
12
-
12
+ import enum
13
13
import json
14
+ import logging
14
15
import os
15
- import sys
16
16
from pathlib import Path
17
- from typing import List , Dict
17
+ from typing import List , Dict , Any , Optional
18
18
19
19
import yaml
20
20
@@ -27,33 +27,58 @@ def name_jobs(jobs: List[Dict], prefix: str) -> List[Dict]:
27
27
return jobs
28
28
29
29
30
- if __name__ == "__main__" :
31
- github_ctx = json .loads (os .environ ["GITHUB_CTX" ])
30
+ class JobType (enum .Enum ):
31
+ PR = enum .auto ()
32
+ Try = enum .auto ()
32
33
33
- with open (JOBS_YAML_PATH ) as f :
34
- data = yaml .safe_load (f )
35
34
35
+ def find_job_type (github_ctx : Dict [str , Any ]) -> Optional [JobType ]:
36
36
event_name = github_ctx ["event_name" ]
37
37
ref = github_ctx ["ref" ]
38
38
repository = github_ctx ["repository" ]
39
39
40
- old_bors_try_build = (
41
- ref in ("refs/heads/try" , "refs/heads/try-perf" ) and
42
- repository == "rust-lang-ci/rust"
43
- )
44
- new_bors_try_build = (
45
- ref == "refs/heads/automation/bors/try" and
46
- repository == "rust-lang/rust"
47
- )
48
- try_build = old_bors_try_build or new_bors_try_build
40
+ if event_name == "pull_request" :
41
+ return JobType .PR
42
+ elif event_name == "push" :
43
+ old_bors_try_build = (
44
+ ref in ("refs/heads/try" , "refs/heads/try-perf" ) and
45
+ repository == "rust-lang-ci/rust"
46
+ )
47
+ new_bors_try_build = (
48
+ ref == "refs/heads/automation/bors/try" and
49
+ repository == "rust-lang/rust"
50
+ )
51
+ try_build = old_bors_try_build or new_bors_try_build
52
+
53
+ if try_build :
54
+ return JobType .Try
55
+
56
+ return None
57
+
58
+
59
+ def calculate_jobs (job_type : JobType , job_data : Dict [str , Any ]) -> List [Dict [str , Any ]]:
60
+ if job_type == JobType .PR :
61
+ return name_jobs (job_data ["pr" ], "PR" )
62
+ elif job_type == JobType .Try :
63
+ return name_jobs (job_data ["try" ], "Try" )
64
+
65
+ return []
66
+
67
+
68
+ if __name__ == "__main__" :
69
+ logging .basicConfig (level = logging .INFO )
70
+
71
+ github_ctx = json .loads (os .environ ["GITHUB_CTX" ])
72
+
73
+ with open (JOBS_YAML_PATH ) as f :
74
+ data = yaml .safe_load (f )
75
+
76
+ job_type = find_job_type (github_ctx )
77
+ logging .info (f"Job type: { job_type } " )
49
78
50
79
jobs = []
51
- # Pull request CI jobs. Their name is 'PR - <image>'
52
- if event_name == "pull_request" :
53
- jobs = name_jobs (data ["pr" ], "PR" )
54
- # Try builds
55
- elif event_name == "push" and try_build :
56
- jobs = name_jobs (data ["try" ], "try" )
80
+ if job_type is not None :
81
+ jobs = calculate_jobs (job_type , data )
57
82
58
- print (f"Output:\n { json . dumps (jobs , indent = 4 )} " , file = sys . stderr )
83
+ logging . info (f"Output:\n { yaml . dump (jobs , indent = 4 )} " )
59
84
print (f"jobs={ json .dumps (jobs )} " )
0 commit comments