From 158dac5e1c9779724d38f41fa6eec732c5ceea22 Mon Sep 17 00:00:00 2001 From: Lucien Greathouse Date: Tue, 8 Jun 2021 16:53:03 -0400 Subject: [PATCH] Move subcommand branching into Options struct --- src/bin.rs | 18 ++---------------- src/cli/mod.rs | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/bin.rs b/src/bin.rs index 3b1a980e..34d89d8a 100644 --- a/src/bin.rs +++ b/src/bin.rs @@ -3,21 +3,7 @@ use std::{env, panic, process}; use backtrace::Backtrace; use structopt::StructOpt; -use librojo::cli::{self, GlobalOptions, Options, Subcommand}; - -fn run(global: GlobalOptions, subcommand: Subcommand) -> anyhow::Result<()> { - match subcommand { - Subcommand::Init(subcommand) => subcommand.run()?, - Subcommand::Serve(serve_options) => cli::serve(global, serve_options)?, - Subcommand::Build(subcommand) => subcommand.run()?, - Subcommand::Upload(upload_options) => cli::upload(upload_options)?, - Subcommand::FmtProject(subcommand) => subcommand.run()?, - Subcommand::Doc(subcommand) => subcommand.run()?, - Subcommand::Plugin(subcommand) => subcommand.run()?, - } - - Ok(()) -} +use librojo::cli::Options; fn main() { panic::set_hook(Box::new(|panic_info| { @@ -82,7 +68,7 @@ fn main() { .write_style(options.global.color.into()) .init(); - if let Err(err) = run(options.global, options.subcommand) { + if let Err(err) = options.run() { log::error!("{:?}", err); process::exit(1); } diff --git a/src/cli/mod.rs b/src/cli/mod.rs index afefad58..60ce87f4 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -41,6 +41,20 @@ pub struct Options { pub subcommand: Subcommand, } +impl Options { + pub fn run(self) -> anyhow::Result<()> { + match self.subcommand { + Subcommand::Init(subcommand) => subcommand.run(), + Subcommand::Serve(serve_options) => serve(self.global, serve_options), + Subcommand::Build(subcommand) => subcommand.run(), + Subcommand::Upload(upload_options) => upload(upload_options), + Subcommand::FmtProject(subcommand) => subcommand.run(), + Subcommand::Doc(subcommand) => subcommand.run(), + Subcommand::Plugin(subcommand) => subcommand.run(), + } + } +} + #[derive(Debug, StructOpt)] pub struct GlobalOptions { /// Sets verbosity level. Can be specified multiple times.