ninja_files_kustomize/
depfiles.rs

1use ninja_files_data::*;
2
3const KUSTOMIZE_WITH_DEPFILES: &str = "kustomize-with-depfile";
4pub fn depfiles<Folder, Out, Deps, Dep>(folder: Folder, output: Out, deps: Deps) -> FileBuilder
5where
6    Out: AsRef<Utf8Path>,
7    Folder: AsRef<Utf8Path>,
8    Dep: AsRef<Utf8Path>,
9    Deps: Iterator<Item = Dep>,
10{
11    let command = CommandBuilder::new("kustomize-depfiles")
12        .arg("--target")
13        .arg("$out")
14        .arg("--out")
15        .arg("$depfile")
16        .arg("$dir")
17        .arg("&&")
18        .arg("kustomize")
19        .arg("build")
20        .arg("$dir")
21        .arg("-o")
22        .arg("$out");
23    let rule = RuleBuilder::new(command).variable("deps", "gcc");
24
25    let mut depfile = output.as_ref().to_path_buf();
26    depfile.set_extension("d");
27    let kustomize_file = folder.as_ref().join("kustomization.yaml");
28    let mut builder = BuildBuilder::new(KUSTOMIZE_WITH_DEPFILES)
29        .variable("dir", folder.as_ref())
30        .variable("depfile", depfile)
31        .implicit(kustomize_file);
32
33    for dep in deps {
34        builder = builder.order(dep)
35    }
36    FileBuilder::new()
37        .rule(KUSTOMIZE_WITH_DEPFILES, rule)
38        .file(output, builder)
39}