Change from types implementing build_ui to a mod for every binary.

Works with all available binaries.
Code cleanup
This commit is contained in:
mario 2016-11-02 19:43:27 +01:00
parent bf88a43a59
commit 2644739e35

View file

@ -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"));