feat: with init command

Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
2023-06-17 03:38:48 +02:00
parent 91ee9d4387
commit 6c5fed87b1
13 changed files with 1914 additions and 310 deletions

View File

@@ -18,20 +18,20 @@ use crate::{
use self::subcommands::render_template::RenderTemplateCommand;
#[derive(Debug, Clone)]
pub struct CuddleCli<'a> {
pub struct CuddleCli {
scripts: Vec<CuddleAction>,
variables: Vec<CuddleVariable>,
context: Arc<Mutex<Vec<CuddleContext>>>,
command: Option<Command<'a>>,
command: Option<Command>,
tmp_dir: Option<PathBuf>,
config: CuddleConfig,
}
impl<'a> CuddleCli<'a> {
impl CuddleCli {
pub fn new(
context: Arc<Mutex<Vec<CuddleContext>>>,
config: CuddleConfig,
) -> anyhow::Result<CuddleCli<'a>> {
) -> anyhow::Result<CuddleCli> {
let mut cli = CuddleCli {
scripts: vec![],
variables: vec![],
@@ -159,6 +159,7 @@ impl<'a> CuddleCli<'a> {
root_cmd = subcommands::x::build_command(root_cmd, self.clone());
root_cmd = subcommands::render_template::build_command(root_cmd);
root_cmd = subcommands::init::build_command(root_cmd, self.clone());
self.command = Some(root_cmd);
@@ -176,13 +177,15 @@ impl<'a> CuddleCli<'a> {
.and_then(|cmd| cmd.execute())?;
Ok(())
}
Some(("init", sub_matches)) => {
subcommands::init::execute_init(sub_matches, self.clone())
}
_ => Err(anyhow::anyhow!("could not find a match")),
};
match res {
Ok(()) => {}
Err(e) => {
let _ = cli.print_long_help();
return Err(e);
}
}