ninja_files_data/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 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}