Change from types implementing build_ui to a mod for every binary.
Works with all available binaries. Code cleanup
This commit is contained in:
parent
bf88a43a59
commit
2644739e35
1 changed files with 67 additions and 23 deletions
86
bin/build.rs
86
bin/build.rs
|
@ -1,47 +1,91 @@
|
||||||
extern crate clap;
|
extern crate clap;
|
||||||
extern crate libimagrt;
|
extern crate libimagrt;
|
||||||
|
extern crate libimagentrytag;
|
||||||
|
extern crate libimagutil;
|
||||||
#[macro_use] extern crate version;
|
#[macro_use] extern crate version;
|
||||||
|
|
||||||
use clap::Shell;
|
use clap::Shell;
|
||||||
use libimagrt::runtime::Runtime;
|
use libimagrt::runtime::Runtime;
|
||||||
|
|
||||||
include!("../imag-store/src/ui.rs");
|
|
||||||
|
|
||||||
macro_rules! gen_types_buildui {
|
macro_rules! gen_types_buildui {
|
||||||
($(($p:expr, $n:ident)$(,)*)*) => (
|
($(($p:expr, $n:ident)$(,)*)*) => (
|
||||||
trait _buildui_fn_type_trait {
|
|
||||||
fn build_ui<'a>(app : App<'a, 'a>) -> App<'a, 'a>;
|
|
||||||
}
|
|
||||||
$(
|
$(
|
||||||
struct $n;
|
mod $n {
|
||||||
impl $n {
|
|
||||||
pub fn new() -> Self {
|
|
||||||
{}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
impl _buildui_fn_type_trait for $n {
|
|
||||||
include!($p);
|
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() {
|
fn main() {
|
||||||
let mut app = Runtime::get_default_cli_builder(
|
let mut app = Runtime::get_default_cli_builder(
|
||||||
"imag",
|
"imag",
|
||||||
&version!()[..],
|
&version!()[..],
|
||||||
"imag foo bar");
|
"imag")
|
||||||
let v = vec![("store", imagstore::new()), ("todo", imagtodo::new())];
|
|
||||||
for (name, obj) in v {
|
|
||||||
app
|
|
||||||
.subcommand(
|
.subcommand(
|
||||||
obj::build_ui(Runtime::get_default_cli_builder(
|
imagbookmark::build_ui(Runtime::get_default_cli_builder(
|
||||||
name,
|
"bookmark",
|
||||||
&version!()[..],
|
&version!()[..],
|
||||||
name)));
|
"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::Bash, env!("OUT_DIR"));
|
||||||
app.gen_completions("imag", Shell::Fish, env!("OUT_DIR"));
|
app.gen_completions("imag", Shell::Fish, env!("OUT_DIR"));
|
||||||
app.gen_completions("imag", Shell::Zsh, env!("OUT_DIR"));
|
app.gen_completions("imag", Shell::Zsh, env!("OUT_DIR"));
|
||||||
|
|
Loading…
Reference in a new issue