diff --git a/src/cli/subcommand/install.rs b/src/cli/subcommand/install.rs index ff57cc5..c48c464 100644 --- a/src/cli/subcommand/install.rs +++ b/src/cli/subcommand/install.rs @@ -12,8 +12,10 @@ use eyre::{eyre, WrapErr}; use crate::{cli::CommandExecute, interaction}; /// Execute an install (possibly using an existing plan) +/// +/// To pass custom options, select a planner, for example `harmonic install linux-multi --help` #[derive(Debug, Parser)] -#[command(args_conflicts_with_subcommands = true, arg_required_else_help = true)] +#[command(args_conflicts_with_subcommands = true)] pub struct Install { #[clap( long, @@ -92,7 +94,12 @@ impl CommandExecute for Install { .wrap_err("Reading plan")?; serde_json::from_str(&install_plan_string)? }, - (None, None) => return Err(eyre!("`--plan` or a planner is required")), + (None, None) => { + let builtin_planner = BuiltinPlanner::default() + .await + .map_err(|e| eyre::eyre!(e))?; + builtin_planner.plan().await.map_err(|e| eyre!(e))? + }, (Some(_), Some(_)) => return Err(eyre!("`--plan` conflicts with passing a planner, a planner creates plans, so passing an existing plan doesn't make sense")), }; diff --git a/src/cli/subcommand/plan.rs b/src/cli/subcommand/plan.rs index 5a3d894..2c4c8a5 100644 --- a/src/cli/subcommand/plan.rs +++ b/src/cli/subcommand/plan.rs @@ -9,7 +9,6 @@ use crate::cli::CommandExecute; /// Plan an install that can be repeated on an identical host later #[derive(Debug, Parser)] -#[command(arg_required_else_help = true)] pub struct Plan { #[clap(subcommand)] pub planner: Option,