diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-09-13 22:10:20 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-09-13 22:10:20 +0800 |
| commit | 3b27ce15cace19804031024f286754aedf86205e (patch) | |
| tree | 989cf322a30f35480460b7a60d46eb8228fb5d25 /src/client/executor.rs | |
| parent | b03c840683dd92f78c91ba48f0d1abd606bf0ff1 (diff) | |
feat: `executor`, executs `tasks`
Diffstat (limited to 'src/client/executor.rs')
| -rw-r--r-- | src/client/executor.rs | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/client/executor.rs b/src/client/executor.rs index eee1b36..df22c57 100644 --- a/src/client/executor.rs +++ b/src/client/executor.rs @@ -1,15 +1,25 @@ -use crate::executor::tasks::Task; +use crate::executor::tasks::{IntoTask, IntoTaskErr, Task}; mod tasks; -struct Executor<T: Task> { - task: T, +struct Executor<'a> { + task: &'a Task, + args: Box<[&'a str]>, + output: Option<Result<String, String>>, } -impl<T: Task> Executor<T> { - // fn new(args: &str) -> Self { - // // exe(parse()) - // } +impl<'a> Executor<'a> { + fn new(task: impl IntoTask, args: &'a str) -> Result<Self, IntoTaskErr> { + let task = task.into_task()?; + Ok(Self { + task: task, + args: Box::new([args]), + output: None, + }) + } - // IntoTask like IntoUrl + fn run(&mut self) -> Option<&Result<String, String>> { + self.output = Some((self.task.exec)(&self.args)); + self.output.as_ref() + } } |
