From 2644739e35ae768110d3504f46d232d18dfdabba Mon Sep 17 00:00:00 2001 From: mario Date: Wed, 2 Nov 2016 19:43:27 +0100 Subject: [PATCH] Change from types implementing build_ui to a mod for every binary. Works with all available binaries. Code cleanup --- bin/build.rs | 90 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 23 deletions(-) diff --git a/bin/build.rs b/bin/build.rs index 74fd4199..d762f6bf 100644 --- a/bin/build.rs +++ b/bin/build.rs @@ -1,47 +1,91 @@ extern crate clap; extern crate libimagrt; +extern crate libimagentrytag; +extern crate libimagutil; #[macro_use] extern crate version; use clap::Shell; use libimagrt::runtime::Runtime; -include!("../imag-store/src/ui.rs"); - macro_rules! gen_types_buildui { ($(($p:expr, $n:ident)$(,)*)*) => ( - trait _buildui_fn_type_trait { - fn build_ui<'a>(app : App<'a, 'a>) -> App<'a, 'a>; - } $( - struct $n; - impl $n { - pub fn new() -> Self { - {} - } - } - impl _buildui_fn_type_trait for $n { + mod $n { include!($p); } )* ) } -gen_types_buildui!(("../imag-store/src/ui.rs", imagstore), ("../imag-todo/src/ui.rs", imagtodo)); +gen_types_buildui!( + ("../imag-bookmark/src/ui.rs", imagbookmark), + ("../imag-counter/src/ui.rs", imagcounter), + ("../imag-diary/src/ui.rs", imagdiary), + ("../imag-link/src/ui.rs", imaglink), + ("../imag-notes/src/ui.rs", imagnotes), + ("../imag-ref/src/ui.rs", imagref), + ("../imag-store/src/ui.rs", imagstore), + ("../imag-tag/src/ui.rs", imagtag), + ("../imag-todo/src/ui.rs", imagtodo), + ("../imag-view/src/ui.rs", imagview) + ); fn main() { let mut app = Runtime::get_default_cli_builder( "imag", &version!()[..], - "imag foo bar"); - let v = vec![("store", imagstore::new()), ("todo", imagtodo::new())]; - for (name, obj) in v { - app - .subcommand( - obj::build_ui(Runtime::get_default_cli_builder( - name, - &version!()[..], - name))); - } + "imag") + .subcommand( + imagbookmark::build_ui(Runtime::get_default_cli_builder( + "bookmark", + &version!()[..], + "bookmark"))) + .subcommand( + imagcounter::build_ui(Runtime::get_default_cli_builder( + "counter", + &version!()[..], + "counter"))) + .subcommand( + imagdiary::build_ui(Runtime::get_default_cli_builder( + "diary", + &version!()[..], + "diary"))) + .subcommand( + imaglink::build_ui(Runtime::get_default_cli_builder( + "link", + &version!()[..], + "link"))) + .subcommand( + imagnotes::build_ui(Runtime::get_default_cli_builder( + "notes", + &version!()[..], + "notes"))) + .subcommand( + imagref::build_ui(Runtime::get_default_cli_builder( + "ref", + &version!()[..], + "ref"))) + .subcommand( + imagstore::build_ui(Runtime::get_default_cli_builder( + "store", + &version!()[..], + "store"))) + .subcommand( + imagtag::build_ui(Runtime::get_default_cli_builder( + "tag", + &version!()[..], + "tag"))) + .subcommand( + imagtodo::build_ui(Runtime::get_default_cli_builder( + "todo", + &version!()[..], + "todo"))) + .subcommand( + imagview::build_ui(Runtime::get_default_cli_builder( + "view", + &version!()[..], + "view"))) + ; app.gen_completions("imag", Shell::Bash, env!("OUT_DIR")); app.gen_completions("imag", Shell::Fish, env!("OUT_DIR")); app.gen_completions("imag", Shell::Zsh, env!("OUT_DIR"));