Merge pull request #417 from matthiasbeyer/libimagrt/runtime-setup-helper
Libimagrt/runtime setup helper
This commit is contained in:
commit
5ae2dcf2a8
|
@ -25,7 +25,7 @@ extern crate libimagutil;
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
use libimagrt::runtime::Runtime;
|
use libimagrt::setup::generate_runtime_setup;
|
||||||
use libimagcounter::counter::Counter;
|
use libimagcounter::counter::Counter;
|
||||||
use libimagerror::trace::trace_error;
|
use libimagerror::trace::trace_error;
|
||||||
use libimagutil::key_value_split::IntoKeyValue;
|
use libimagutil::key_value_split::IntoKeyValue;
|
||||||
|
@ -50,20 +50,10 @@ enum Action {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let name = "imag-counter";
|
let rt = generate_runtime_setup("imag-counter",
|
||||||
let version = &version!()[..];
|
&version!()[..],
|
||||||
let about = "Counter tool to count things";
|
"Counter tool to count things",
|
||||||
let ui = build_ui(Runtime::get_default_cli_builder(name, version, about));
|
build_ui);
|
||||||
let rt = {
|
|
||||||
let rt = Runtime::new(ui);
|
|
||||||
if rt.is_ok() {
|
|
||||||
rt.unwrap()
|
|
||||||
} else {
|
|
||||||
println!("Could not set up Runtime");
|
|
||||||
println!("{:?}", rt.unwrap_err());
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
rt.cli()
|
rt.cli()
|
||||||
.subcommand_name()
|
.subcommand_name()
|
||||||
|
|
|
@ -29,6 +29,7 @@ use std::process::exit;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
|
||||||
use libimagrt::runtime::Runtime;
|
use libimagrt::runtime::Runtime;
|
||||||
|
use libimagrt::setup::generate_runtime_setup;
|
||||||
use libimagstore::error::StoreError;
|
use libimagstore::error::StoreError;
|
||||||
use libimagstore::store::Entry;
|
use libimagstore::store::Entry;
|
||||||
use libimagstore::store::FileLockEntry;
|
use libimagstore::store::FileLockEntry;
|
||||||
|
@ -43,20 +44,10 @@ mod ui;
|
||||||
use ui::build_ui;
|
use ui::build_ui;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let name = "imag-link";
|
let rt = generate_runtime_setup("imag-link",
|
||||||
let version = &version!()[..];
|
&version!()[..],
|
||||||
let about = "Link entries";
|
"Link entries",
|
||||||
let ui = build_ui(Runtime::get_default_cli_builder(name, version, about));
|
build_ui);
|
||||||
let rt = {
|
|
||||||
let rt = Runtime::new(ui);
|
|
||||||
if rt.is_ok() {
|
|
||||||
rt.unwrap()
|
|
||||||
} else {
|
|
||||||
println!("Could not set up Runtime");
|
|
||||||
println!("{:?}", rt.unwrap_err());
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
rt.cli()
|
rt.cli()
|
||||||
.subcommand_name()
|
.subcommand_name()
|
||||||
|
|
|
@ -12,6 +12,7 @@ use std::process::exit;
|
||||||
|
|
||||||
use libimagrt::edit::Edit;
|
use libimagrt::edit::Edit;
|
||||||
use libimagrt::runtime::Runtime;
|
use libimagrt::runtime::Runtime;
|
||||||
|
use libimagrt::setup::generate_runtime_setup;
|
||||||
use libimagnotes::note::Note;
|
use libimagnotes::note::Note;
|
||||||
use libimagerror::trace::trace_error;
|
use libimagerror::trace::trace_error;
|
||||||
|
|
||||||
|
@ -19,20 +20,10 @@ mod ui;
|
||||||
use ui::build_ui;
|
use ui::build_ui;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let name = "imag-notes";
|
let rt = generate_runtime_setup("imag-notes",
|
||||||
let version = &version!()[..];
|
&version!()[..],
|
||||||
let about = "Note taking helper";
|
"Note taking helper",
|
||||||
let ui = build_ui(Runtime::get_default_cli_builder(name, version, about));
|
build_ui);
|
||||||
let rt = {
|
|
||||||
let rt = Runtime::new(ui);
|
|
||||||
if rt.is_ok() {
|
|
||||||
rt.unwrap()
|
|
||||||
} else {
|
|
||||||
println!("Could not set up Runtime");
|
|
||||||
println!("{:?}", rt.unwrap_err());
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
rt.cli()
|
rt.cli()
|
||||||
.subcommand_name()
|
.subcommand_name()
|
||||||
|
|
|
@ -24,8 +24,7 @@ extern crate libimagstore;
|
||||||
extern crate libimagutil;
|
extern crate libimagutil;
|
||||||
#[macro_use] extern crate libimagerror;
|
#[macro_use] extern crate libimagerror;
|
||||||
|
|
||||||
use libimagrt::runtime::Runtime;
|
use libimagrt::setup::generate_runtime_setup;
|
||||||
use std::process::exit;
|
|
||||||
|
|
||||||
mod error;
|
mod error;
|
||||||
mod ui;
|
mod ui;
|
||||||
|
@ -42,20 +41,10 @@ use update::update;
|
||||||
use delete::delete;
|
use delete::delete;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let name = "imag-store";
|
let rt = generate_runtime_setup("imag-store",
|
||||||
let version = &version!()[..];
|
&version!()[..],
|
||||||
let about = "Direct interface to the store. Use with great care!";
|
"Direct interface to the store. Use with great care!",
|
||||||
let ui = build_ui(Runtime::get_default_cli_builder(name, version, about));
|
build_ui);
|
||||||
let rt = {
|
|
||||||
let rt = Runtime::new(ui);
|
|
||||||
if rt.is_ok() {
|
|
||||||
rt.unwrap()
|
|
||||||
} else {
|
|
||||||
println!("Could not set up Runtime");
|
|
||||||
println!("{:?}", rt.unwrap_err());
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
rt.cli()
|
rt.cli()
|
||||||
.subcommand_name()
|
.subcommand_name()
|
||||||
|
|
|
@ -12,6 +12,7 @@ extern crate libimagerror;
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
|
|
||||||
use libimagrt::runtime::Runtime;
|
use libimagrt::runtime::Runtime;
|
||||||
|
use libimagrt::setup::generate_runtime_setup;
|
||||||
use libimagentrytag::tagable::Tagable;
|
use libimagentrytag::tagable::Tagable;
|
||||||
use libimagstore::storeid::build_entry_path;
|
use libimagstore::storeid::build_entry_path;
|
||||||
use libimagerror::trace::trace_error;
|
use libimagerror::trace::trace_error;
|
||||||
|
@ -21,20 +22,10 @@ mod ui;
|
||||||
use ui::build_ui;
|
use ui::build_ui;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let name = "imag-store";
|
let rt = generate_runtime_setup("imag-store",
|
||||||
let version = &version!()[..];
|
&version!()[..],
|
||||||
let about = "Direct interface to the store. Use with great care!";
|
"Direct interface to the store. Use with great care!",
|
||||||
let ui = build_ui(Runtime::get_default_cli_builder(name, version, about));
|
build_ui);
|
||||||
let rt = {
|
|
||||||
let rt = Runtime::new(ui);
|
|
||||||
if rt.is_ok() {
|
|
||||||
rt.unwrap()
|
|
||||||
} else {
|
|
||||||
println!("Could not set up Runtime");
|
|
||||||
println!("{:?}", rt.unwrap_err());
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let id = rt.cli().value_of("id").unwrap(); // enforced by clap
|
let id = rt.cli().value_of("id").unwrap(); // enforced by clap
|
||||||
rt.cli()
|
rt.cli()
|
||||||
|
|
|
@ -28,6 +28,7 @@ use std::result::Result as RResult;
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
|
|
||||||
use libimagrt::runtime::Runtime;
|
use libimagrt::runtime::Runtime;
|
||||||
|
use libimagrt::setup::generate_runtime_setup;
|
||||||
use libimagstore::store::FileLockEntry;
|
use libimagstore::store::FileLockEntry;
|
||||||
use libimagerror::trace::trace_error;
|
use libimagerror::trace::trace_error;
|
||||||
|
|
||||||
|
@ -44,20 +45,10 @@ use viewer::stdout::StdoutViewer;
|
||||||
type Result<T> = RResult<T, ViewError>;
|
type Result<T> = RResult<T, ViewError>;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let name = "imag-view";
|
let rt = generate_runtime_setup( "imag-view",
|
||||||
let version = &version!()[..];
|
&version!()[..],
|
||||||
let about = "View entries (readonly)";
|
"View entries (readonly)",
|
||||||
let ui = build_ui(Runtime::get_default_cli_builder(name, version, about));
|
build_ui);
|
||||||
let rt = {
|
|
||||||
let rt = Runtime::new(ui);
|
|
||||||
if rt.is_ok() {
|
|
||||||
rt.unwrap()
|
|
||||||
} else {
|
|
||||||
println!("Could not set up Runtime");
|
|
||||||
println!("{:?}", rt.unwrap_err());
|
|
||||||
exit(1); // we can afford not-executing destructors here
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let entry_id = rt.cli().value_of("id").unwrap(); // enforced by clap
|
let entry_id = rt.cli().value_of("id").unwrap(); // enforced by clap
|
||||||
|
|
||||||
|
|
|
@ -34,4 +34,5 @@ mod logger;
|
||||||
pub mod edit;
|
pub mod edit;
|
||||||
pub mod error;
|
pub mod error;
|
||||||
pub mod runtime;
|
pub mod runtime;
|
||||||
|
pub mod setup;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
use clap::App;
|
||||||
|
|
||||||
|
use runtime::Runtime;
|
||||||
|
|
||||||
|
pub type Name = &'static str;
|
||||||
|
pub type Version<'a> = &'a str;
|
||||||
|
pub type About = &'static str;
|
||||||
|
|
||||||
|
/// Helper to generate the Runtime object
|
||||||
|
///
|
||||||
|
/// exit()s the program if the runtime couldn't be build, prints error with println!() before
|
||||||
|
/// exiting
|
||||||
|
pub fn generate_runtime_setup<'a, B>(name: Name, version: Version<'a>, about: About, builder: B)
|
||||||
|
-> Runtime<'a>
|
||||||
|
where B: FnOnce(App<'a, 'a>) -> App<'a, 'a>
|
||||||
|
{
|
||||||
|
use std::process::exit;
|
||||||
|
use libimagerror::trace::trace_error_dbg;
|
||||||
|
|
||||||
|
Runtime::new(builder(Runtime::get_default_cli_builder(name, version, about)))
|
||||||
|
.unwrap_or_else(|e| {
|
||||||
|
println!("Could not set up Runtime");
|
||||||
|
println!("{:?}", e);
|
||||||
|
trace_error_dbg(&e);
|
||||||
|
exit(1);
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in New Issue