functional update
* convert from Rust 2015 to Rust 2018 * convert from slog to tracing new module-system handling (macros and crates) Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
@@ -5,6 +5,7 @@ authors = ["Ralf Zerres <ralf.zerres@networkx.de>"]
|
|||||||
description = "Supports lawyers to capture relevant data encountered during an online legal advice\n"
|
description = "Supports lawyers to capture relevant data encountered during an online legal advice\n"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
# optimize to max speed
|
# optimize to max speed
|
||||||
@@ -25,4 +26,3 @@ features = [ "postgres", "sqlite" ]
|
|||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
|
|
||||||
[dependencies.locales]
|
[dependencies.locales]
|
||||||
version = "0.1.0"
|
|
||||||
79
src/main.rs
79
src/main.rs
@@ -4,43 +4,23 @@
|
|||||||
* SPDX-License-Identifier: 0BSD
|
* SPDX-License-Identifier: 0BSD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#[macro_use]
|
// Rust nightly supports procedural macros!
|
||||||
extern crate clap;
|
//#![feature(proc_macro)]
|
||||||
extern crate locales;
|
//#![deny(rust_2018_idioms)]
|
||||||
|
|
||||||
use clap::App;
|
//use clap::{ArgMatches, Arg, App, SubCommand};
|
||||||
|
use clap::ArgMatches;
|
||||||
|
use serde::Deserialize;
|
||||||
|
use std::{env, process};
|
||||||
|
use dotenv::dotenv;
|
||||||
use locales::t;
|
use locales::t;
|
||||||
|
use tracing::{debug, info, instrument, span, Level};
|
||||||
|
|
||||||
fn main() {
|
#[derive(Deserialize, Debug)]
|
||||||
// set locale
|
struct Environment {
|
||||||
let lang= "de";
|
test_lang: String,
|
||||||
|
}
|
||||||
|
|
||||||
// handle commandline arguments with clap (relative path to cli.yml)
|
|
||||||
let res = t!("parse.arguments", lang);
|
|
||||||
println!("{}", &res);
|
|
||||||
|
|
||||||
let yaml = load_yaml!("cli.yml");
|
|
||||||
let matches = App::from_yaml(yaml)
|
|
||||||
.name(crate_name!())
|
|
||||||
.version(crate_version!())
|
|
||||||
.author(crate_authors!())
|
|
||||||
.about(crate_description!())
|
|
||||||
.get_matches();
|
|
||||||
|
|
||||||
// Gets a options value if supplied by user. otherwise set defaults
|
|
||||||
let config = matches.value_of("config").unwrap_or("default.conf");
|
|
||||||
println!("Value for config: {}", config);
|
|
||||||
|
|
||||||
let dbdriver = matches.value_of("dbdriver").unwrap_or("sqlite3");
|
|
||||||
println!("Value for database driver: {}", dbdriver);
|
|
||||||
|
|
||||||
// Vary the output based on how many times the user used the "verbose" flag
|
|
||||||
// (i.e. ' -v -v -v' or 'myprog -vvv' vs 'myprog -v'
|
|
||||||
match matches.occurrences_of("v") {
|
|
||||||
0 => println!("No verbose info"),
|
|
||||||
1 => println!("Some verbose info"),
|
|
||||||
2 => println!("Tons of verbose info"),
|
|
||||||
3 | _ => println!("Don't be crazy"),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// You can handle information about subcommands by requesting their matches by name
|
// You can handle information about subcommands by requesting their matches by name
|
||||||
@@ -52,6 +32,39 @@ fn main() {
|
|||||||
println!("Printing normally...");
|
println!("Printing normally...");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fn main() {
|
||||||
|
//initialize tracing eco-system
|
||||||
|
use tracing_subscriber::fmt;
|
||||||
|
|
||||||
|
let span = span!(Level::TRACE, "advotracker_main");
|
||||||
|
let _enter = span.enter();
|
||||||
|
let subscriber = fmt::Subscriber::builder()
|
||||||
|
.with_env_filter("advotracker=trace")
|
||||||
|
.finish();
|
||||||
|
|
||||||
|
tracing::subscriber::with_default(subscriber, || {
|
||||||
|
// get testing environment (.env)
|
||||||
|
debug!(
|
||||||
|
message = "Reading Environment ...",
|
||||||
|
finished = "no!"
|
||||||
|
);
|
||||||
|
|
||||||
|
dotenv().ok();
|
||||||
|
let mut lang = env::var("LANG").unwrap_or("en".to_string());
|
||||||
|
match envy::from_env::<Environment>() {
|
||||||
|
Ok(environment) => {
|
||||||
|
if environment.test_lang != lang { lang = environment.test_lang; }
|
||||||
|
},
|
||||||
|
Err(e) => println!("Couldn't read LANG ({:#?})", e),
|
||||||
|
};
|
||||||
|
let res = t!("parse.environment", lang);
|
||||||
|
info!(target: "advotracker_event", "{}", res);
|
||||||
|
info!(target: "advotracker_event", "{}", lang);
|
||||||
|
|
||||||
|
// handle commandline arguments with clap (relative path to cli.yml)
|
||||||
|
let res = t!("parse.arguments", lang);
|
||||||
|
info!(target: "advotracker_event", "{}", res);
|
||||||
|
|
||||||
|
|
||||||
// Starting the program logic
|
// Starting the program logic
|
||||||
let res = t!("main.start", lang);
|
let res = t!("main.start", lang);
|
||||||
|
|||||||
Reference in New Issue
Block a user