From 5dfa9c0dcfbbd68618acd9abd89458a51734387a Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Thu, 4 Apr 2024 21:07:32 +0200 Subject: driver: do not allow overriding basename, provide additional variables to tasks The variables {{recipename}} and {{recipe}} are now available in tasks. An overrideabe {{name}} (defaulting to {{basename}}) will be added in the future. --- crates/driver/src/context.rs | 4 +++- crates/driver/src/recipe.rs | 26 +++++++++++++------------- crates/driver/src/task.rs | 14 ++++++++++---- 3 files changed, 26 insertions(+), 18 deletions(-) (limited to 'crates') diff --git a/crates/driver/src/context.rs b/crates/driver/src/context.rs index a1abdde..b4bdc44 100644 --- a/crates/driver/src/context.rs +++ b/crates/driver/src/context.rs @@ -345,7 +345,9 @@ impl Context { new_args.set("cross_compile", cross_compile); - new_args.set("basename", Some(task_def.meta.name.clone())); + new_args.set("basename", Some(task_def.meta.basename.clone())); + new_args.set("recipename", Some(task_def.meta.recipename.clone())); + new_args.set("recipe", Some(task_def.meta.recipe.clone())); new_args.set("version", task_def.meta.version.clone()); Ok(TaskRef { diff --git a/crates/driver/src/recipe.rs b/crates/driver/src/recipe.rs index f491ff6..fa6709a 100644 --- a/crates/driver/src/recipe.rs +++ b/crates/driver/src/recipe.rs @@ -1,4 +1,4 @@ -use std::{borrow::Cow, collections::HashMap, ffi::OsStr, fs::File, path::Path, result}; +use std::{collections::HashMap, ffi::OsStr, fs::File, path::Path, result}; use scoped_tls_hkt::scoped_thread_local; use serde::{Deserialize, Deserializer}; @@ -6,7 +6,7 @@ use walkdir::WalkDir; use common::{error::*, types::*}; -use crate::task::{RecipeMeta, TaskDef}; +use crate::task::{RecipeMeta, TaskDef, TaskMeta}; scoped_thread_local!(static CURRENT_RECIPE: str); @@ -85,25 +85,25 @@ pub fn read_recipes>(path: P) -> Result, } @@ -69,10 +67,18 @@ impl Action { } } +#[derive(Clone, Debug, Default)] +pub struct TaskMeta { + pub basename: String, + pub recipename: String, + pub recipe: String, + pub version: Option, +} + #[derive(Clone, Debug, Deserialize, Default)] pub struct TaskDef { #[serde(skip)] - pub meta: RecipeMeta, + pub meta: TaskMeta, #[serde(default)] pub args: HashMap, #[serde(default)] -- cgit v1.2.3