ninja_files_data2/command/
mod.rs

1mod 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    /// The directory to run the program from.
13    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}