use std::collections::HashMap;
use std::path::Path;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ShellResult {
pub exit_code: i32,
pub stdout: String,
pub stderr: String,
}
pub use crate::error::ShellError;
pub trait Shell: Send + Sync {
fn name(&self) -> &str;
fn execute(
&self,
recipe: &str,
env: &HashMap<String, String>,
dir: &Path,
) -> Result<ShellResult, ShellError>;
fn find_unescaped(&self, input: &str, ch: char) -> Vec<usize>;
fn quote(&self, token: &str) -> String;
}
#[cfg(test)]
mod tests {
}