ninja_files_kustomize/
depfiles.rs1use 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}