ninja_files_data2/command/
mod.rs1mod builder;
2mod try_from;
3use std::collections::BTreeMap;
4
5use crate::{Arg, InvalidArg, InvalidProcess, Process};
6pub use builder::*;
7
8#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
9pub struct Command {
10 pub process: Process,
11 pub args: Vec<Arg>,
12 pub cwd: Option<String>,
14 pub env: BTreeMap<String, String>,
15}
16
17impl Command {
18 pub fn try_create<P>(process: P) -> Result<Command, InvalidProcess>
19 where
20 P: TryInto<Process, Error = InvalidProcess>,
21 {
22 let process: Process = process.try_into()?;
23 let command = Command {
24 process,
25 args: vec![],
26 cwd: None,
27 env: BTreeMap::new(),
28 };
29 Ok(command)
30 }
31
32 pub fn arg<A>(mut self, arg: A) -> Result<Self, InvalidArg>
33 where
34 Arg: TryFrom<A, Error = InvalidArg>,
35 {
36 let arg: Arg = arg.try_into()?;
37 self.args.push(arg);
38 Ok(self)
39 }
40}