pub trait Executor {
// Required methods
fn execute<'a>(
&'a self,
cmd: &'a str,
) -> Pin<Box<dyn Future<Output = Result<String, ExecutorError>> + Send + 'a>>;
fn mkdirs<'a>(
&'a self,
path: &'a str,
) -> Pin<Box<dyn Future<Output = Result<(), ExecutorError>> + Send + 'a>>;
fn write_file<'a>(
&'a self,
path: &'a str,
content: &'a str,
) -> Pin<Box<dyn Future<Output = Result<(), ExecutorError>> + Send + 'a>>;
}