1use gh_workflow::{Job, Workflow};
2
3use crate::tasks::workflows::{
4 run_tests::run_tests_in,
5 runners::{self, LINUX_MEDIUM},
6 steps::{self, FluentBuilder, NamedJob, named},
7};
8
9pub fn run_license_checks() -> Workflow {
10 let check_licenses = check_licenses();
11 let build_licenses = build_licenses();
12
13 named::workflow()
14 .map(|workflow| {
15 run_tests_in(
16 &[
17 // no Cargo.toml - the case where Cargo.lock isn't updated
18 // is checked by the `check_dependencies` job as part of the
19 // `run_tests` workflow
20 "Cargo.lock",
21 "**/Cargo.lock",
22 "script/*licenses",
23 "**/LICENSE*",
24 ".github/workflows/run_license_checks.yml",
25 ],
26 workflow,
27 )
28 })
29 .add_job(check_licenses.name, check_licenses.job)
30 .add_job(build_licenses.name, build_licenses.job)
31}
32
33fn check_licenses() -> NamedJob {
34 named::job(
35 Job::default()
36 .runs_on(runners::LINUX_SMALL)
37 .add_step(steps::checkout_repo())
38 .add_step(steps::script("./script/check-licenses")),
39 )
40}
41
42fn build_licenses() -> NamedJob {
43 named::job(
44 Job::default()
45 .runs_on(LINUX_MEDIUM)
46 .add_step(steps::checkout_repo())
47 .add_step(steps::script("./script/generate-licenses")),
48 )
49}