mod builder;
mod try_from;
use std::collections::BTreeMap;
use crate::{Arg, InvalidArg, InvalidProcess, Process};
pub use builder::*;
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub struct Command {
pub process: Process,
pub args: Vec<Arg>,
pub env: BTreeMap<String, String>,
}
impl Command {
pub fn try_create<P>(process: P) -> Result<Command, InvalidProcess>
where
P: TryInto<Process, Error = InvalidProcess>,
{
let process: Process = process.try_into()?;
let command = Command {
process,
args: vec![],
env: BTreeMap::new(),
};
Ok(command)
}
pub fn arg<A>(mut self, arg: A) -> Result<Self, InvalidArg>
where
Arg: TryFrom<A, Error = InvalidArg>,
{
let arg: Arg = arg.try_into()?;
self.args.push(arg);
Ok(self)
}
}