mod options; use options::{Args, SmartRelease, SubCommands}; mod command; fn main() -> anyhow::Result<()> { let args: Args = argh::from_env(); init_logging(); match args.subcommands { SubCommands::SmartRelease(SmartRelease { execute, verbose, bump, bump_dependencies, crates, allow_dirty, ignore_instability, skip_publish, skip_tag, skip_push, dangerously_pass_no_verify, allow_auto_publish_of_stable_crates, dry_run_cargo_publish, update_crates_index, no_bump_on_demand, skip_dependencies, }) => command::release( command::release::Options { dry_run: !execute, verbose: execute || verbose, no_bump_on_demand, allow_dirty, ignore_instability, skip_publish, skip_tag, skip_push, skip_dependencies, dry_run_cargo_publish, no_verify: dangerously_pass_no_verify, allow_auto_publish_of_stable_crates, update_crates_index, }, crates, bump.unwrap_or_else(|| "keep".into()), bump_dependencies.unwrap_or_else(|| "keep".into()), )?, }; Ok(()) } fn init_logging() { env_logger::Builder::new() .format_module_path(false) .format_target(false) .format_timestamp(None) .filter_level(log::LevelFilter::Info) .init(); }