diff --git a/examples/cproj/zinn.yml b/examples/cproj/zinn.yml index 2f60e35..8c9f4e4 100644 --- a/examples/cproj/zinn.yml +++ b/examples/cproj/zinn.yml @@ -7,15 +7,15 @@ constants: OBJECTS: "{{re SOURCES '([^\\\\s ]*).c' (cat BUILDDIR '/' '$1.o')}}" jobs: builddir: - outputs: ["{{BUILDDIR}}"] + outputs: "{{BUILDDIR}}" run: mkdir -vp {{BUILDDIR}} object: args: [path] requires: - job: builddir - inputs: ["{{path}}"] - outputs: ["{{BUILDDIR}}/{{subst path '.c' '.o'}}"] + inputs: "{{path}}" + outputs: "{{BUILDDIR}}/{{subst path '.c' '.o'}}" run: | echo "compiling." sleep 1 @@ -32,8 +32,8 @@ jobs: param: path inputs: "{{SOURCES}}" - job: builddir - input_list: "{{OBJECTS}}" - output_list: "{{BUILDDIR}}/{{BIN}}" + inputs: "{{OBJECTS}}" + outputs: "{{BUILDDIR}}/{{BIN}}" run: | echo "linking." sleep 1 diff --git a/src/job.rs b/src/job.rs index 415becf..069550d 100644 --- a/src/job.rs +++ b/src/job.rs @@ -27,16 +27,16 @@ pub struct JobDescription { args: Vec, #[serde(default)] - inputs: Vec, + inputs: Option, #[serde(default)] - input_list: Option, + input_list: Vec, #[serde(default)] - outputs: Vec, + outputs: Option, #[serde(default)] - output_list: Option, + output_list: Vec, } /// Executable job with dependencies resolved and all variables applied @@ -122,23 +122,23 @@ impl JobDescription { } let mut inputs = Vec::new(); - for input in &self.inputs { - inputs.push(handlebars.render_template(input, &combined_vars)?); - } - if let Some(input_str) = &self.input_list { + if let Some(input_str) = &self.inputs { let rendered_input_str = handlebars.render_template(input_str, &combined_vars)?; let additional_inputs = rendered_input_str .split(char::is_whitespace).map(|s| s.to_owned()); inputs.extend(additional_inputs) } - let mut outputs = Vec::new(); - for output in &self.outputs { - outputs.push(handlebars.render_template(output, &combined_vars)?); + for input in &self.input_list { + inputs.push(handlebars.render_template(input, &combined_vars)?); } - if let Some(output_str) = &self.output_list { + let mut outputs = Vec::new(); + if let Some(output_str) = &self.outputs { let rendered_output_str = handlebars.render_template(output_str, &combined_vars)?; let additional_outputs = rendered_output_str .split(char::is_whitespace).map(|s| s.to_owned()); outputs.extend(additional_outputs) } + for output in &self.output_list { + outputs.push(handlebars.render_template(output, &combined_vars)?); + } let run = handlebars.render_template(&self.run, &combined_vars)?; let name = name.replace('\n', "");