99
1010Currently, it only supports PR and try builds.
1111"""
12-
12+ import enum
1313import json
14+ import logging
1415import os
15- import sys
1616from pathlib import Path
17- from typing import List , Dict
17+ from typing import List , Dict , Any , Optional
1818
1919import yaml
2020
@@ -27,33 +27,58 @@ def name_jobs(jobs: List[Dict], prefix: str) -> List[Dict]:
2727 return jobs
2828
2929
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 ()
3233
33- with open (JOBS_YAML_PATH ) as f :
34- data = yaml .safe_load (f )
3534
35+ def find_job_type (github_ctx : Dict [str , Any ]) -> Optional [JobType ]:
3636 event_name = github_ctx ["event_name" ]
3737 ref = github_ctx ["ref" ]
3838 repository = github_ctx ["repository" ]
3939
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 } " )
4978
5079 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 )
5782
58- print (f"Output:\n { json . dumps (jobs , indent = 4 )} " , file = sys . stderr )
83+ logging . info (f"Output:\n { yaml . dump (jobs , indent = 4 )} " )
5984 print (f"jobs={ json .dumps (jobs )} " )
0 commit comments