ninja_files_data/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    pub env: BTreeMap<String, String>,
13}
14
15impl Command {
16    pub fn try_create<P>(process: P) -> Result<Command, InvalidProcess>
17    where
18        P: TryInto<Process, Error = InvalidProcess>,
19    {
20        let process: Process = process.try_into()?;
21        let command = Command {
22            process,
23            args: vec![],
24            env: BTreeMap::new(),
25        };
26        Ok(command)
27    }
28
29    pub fn arg<A>(mut self, arg: A) -> Result<Self, InvalidArg>
30    where
31        Arg: TryFrom<A, Error = InvalidArg>,
32    {
33        let arg: Arg = arg.try_into()?;
34        self.args.push(arg);
35        Ok(self)
36    }
37}