summaryrefslogtreecommitdiff
path: root/src/executor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/executor.rs')
-rw-r--r--src/executor.rs13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/executor.rs b/src/executor.rs
index df59734..ec95b18 100644
--- a/src/executor.rs
+++ b/src/executor.rs
@@ -1,18 +1,19 @@
use crate::tasks::{CompletedTask, IntoTaskErr, Task, TaskOutput};
-pub struct Executor<'a, 't, N: Copy> {
- task: &'t Task<N>,
+pub struct Executor<'a, 't, N: Copy, T = ()> {
+ task: &'t Task<N, T>,
args: Box<[&'a str]>,
+ ctx: T,
complete_task: Option<CompletedTask<N>>,
}
-impl<'a, 't, N: Copy> Executor<'a, 't, N> {
- pub fn new(task: &'t Task<N>, args: impl IntoIterator<Item = &'a str>) -> Result<Self, IntoTaskErr> {
- Ok(Self { task: task, args: args.into_iter().collect(), complete_task: None })
+impl<'a, 't, N: Copy, T> Executor<'a, 't, N, T> {
+ pub fn new(task: &'t Task<N, T>, args: impl IntoIterator<Item = &'a str>, ctx: T) -> Result<Self, IntoTaskErr> {
+ Ok(Self { task: task, args: args.into_iter().collect(), ctx, complete_task: None })
}
pub fn run(&mut self) -> &TaskOutput {
- let output = (self.task.exec)(&self.args);
+ let output = (self.task.exec)(&self.args, &self.ctx);
self.complete_task = Some(CompletedTask { name: self.task.name, output: Some(output) });
self.complete_task.as_ref().unwrap().output.as_ref().unwrap()
}