annotate rust/src/main.rs @ 635:4424a8b30f9c rust

config crate wants everything to be lower case
author Matt Johnston <matt@ucc.asn.au>
date Sun, 22 Sep 2019 22:06:46 +0800
parents a5721c02d3ee
children a9f353f488d0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
1 #![feature(async_closure)]
632
bde302def78e moving to riker, nowhere near yet
Matt Johnston <matt@ucc.asn.au>
parents: 631
diff changeset
2 #[macro_use] extern crate log;
bde302def78e moving to riker, nowhere near yet
Matt Johnston <matt@ucc.asn.au>
parents: 631
diff changeset
3 // riker has its own logging?
bde302def78e moving to riker, nowhere near yet
Matt Johnston <matt@ucc.asn.au>
parents: 631
diff changeset
4 //extern crate env_logger;
631
c57821a60e51 rust work in progress ?
Matt Johnston <matt@ucc.asn.au>
parents: 627
diff changeset
5
633
490e9e15b98c move some bits to riker
Matt Johnston <matt@ucc.asn.au>
parents: 632
diff changeset
6 #[macro_use] extern crate lazy_static;
490e9e15b98c move some bits to riker
Matt Johnston <matt@ucc.asn.au>
parents: 632
diff changeset
7
589
f2508125adf1 Try using traits for periodic stream
Matt Johnston <matt@ucc.asn.au>
parents: 588
diff changeset
8
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
9 mod config;
590
dccd8504aa38 it runs
Matt Johnston <matt@ucc.asn.au>
parents: 589
diff changeset
10 mod sensor;
609
7bda01659426 not building, paramwaiter work
Matt Johnston <matt@ucc.asn.au>
parents: 607
diff changeset
11 mod fridge;
592
03b48ec0bb03 fridge, types, configwaiter
Matt Johnston <matt@ucc.asn.au>
parents: 591
diff changeset
12 mod types;
615
f153aec221be move Params, epoch code
Matt Johnston <matt@ucc.asn.au>
parents: 614
diff changeset
13 mod params;
591
4a944663fa8d more skeleton
Matt Johnston <matt@ucc.asn.au>
parents: 590
diff changeset
14
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
15
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
16 use riker::actors::*;
588
038734052b20 fiddling with futures-rs instead
Matt Johnston <matt@ucc.asn.au>
parents: 587
diff changeset
17
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
18 use structopt::StructOpt;
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
19
635
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
20 use types::TemplogError;
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
21
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
22 fn run(conf_file: &str, nowait: bool, testmode: bool) -> Result<(), TemplogError> {
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
23
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
24 let cf = config::Config::load(conf_file)?;
587
646f03870762 trying rust
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
25
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
26 let sys = ActorSystem::new().unwrap();
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
27 let props = Props::new_args(params::ParamWaiter::new, cf.clone());
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
28 sys.actor_of(props, "paramwaiter").unwrap();
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
29
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
30 if testmode {
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
31 let props = Props::new_args(sensor::TestSensor::new, cf.clone());
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
32 sys.actor_of(props, "sensor").unwrap()
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
33 } else {
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
34 let props = Props::new_args(sensor::OneWireSensor::new, cf.clone());
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
35 sys.actor_of(props, "sensor").unwrap()
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
36 };
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
37
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
38 let props = Props::new_args(fridge::Fridge::new_actor, (cf.clone(), nowait));
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
39 sys.actor_of(props, "fridge").unwrap();
635
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
40 Ok(())
587
646f03870762 trying rust
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
41 }
646f03870762 trying rust
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
42
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
43 #[derive(Debug, StructOpt)]
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
44 #[structopt(name = "Wort Temperature", about = "Matt Johnston 2019 [email protected]")]
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
45 struct Opt {
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
46 /// Replace existing running instance
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
47 #[structopt(long)]
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
48 new: bool,
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
49
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
50 /// Run in background
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
51 #[structopt(short = "D", long)]
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
52 daemon: bool,
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
53
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
54 #[structopt(short, long)]
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
55 debug: bool,
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
56
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
57 /// Use fake sensors etc
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
58 #[structopt(long)]
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
59 test: bool,
598
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
60
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
61 /// Skip initial fridge wait
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
62 #[structopt(long)]
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
63 nowait: bool,
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
64
635
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
65 /// Print default config (customise in local.toml)
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
66 #[structopt(long)]
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
67 defconf: bool,
635
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
68
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
69 /// Config file
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
70 #[structopt(short = "c", long, default_value = "local.toml")]
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
71 config: String,
598
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
72 }
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
73
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
74 fn handle_args() -> Opt {
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
75 let args = Opt::from_args();
632
bde302def78e moving to riker, nowhere near yet
Matt Johnston <matt@ucc.asn.au>
parents: 631
diff changeset
76
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
77 if args.defconf {
632
bde302def78e moving to riker, nowhere near yet
Matt Johnston <matt@ucc.asn.au>
parents: 631
diff changeset
78 println!("Default configuration:\n{}\n\n{}",
635
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
79 "(custom options go in local.toml)",
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
80 config::Config::default_toml());
632
bde302def78e moving to riker, nowhere near yet
Matt Johnston <matt@ucc.asn.au>
parents: 631
diff changeset
81 std::process::exit(0);
bde302def78e moving to riker, nowhere near yet
Matt Johnston <matt@ucc.asn.au>
parents: 631
diff changeset
82 }
bde302def78e moving to riker, nowhere near yet
Matt Johnston <matt@ucc.asn.au>
parents: 631
diff changeset
83 args
bde302def78e moving to riker, nowhere near yet
Matt Johnston <matt@ucc.asn.au>
parents: 631
diff changeset
84 }
bde302def78e moving to riker, nowhere near yet
Matt Johnston <matt@ucc.asn.au>
parents: 631
diff changeset
85
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
86 // fn setup_log(debug: bool) {
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
87 // let loglevel = if debug {
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
88 // log::LevelFilter::Debug
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
89 // } else {
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
90 // log::LevelFilter::Info
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
91 // };
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
92
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
93 // let format = |record: &log::Record| {
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
94 // let datefmt = "%Y-%m-%d %I:%M:%S %p";
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
95 // let ts = chrono::Local::now().format(datefmt);
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
96 // format!("{}: {} - {}", ts, record.level(), record.args())
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
97 // };
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
98
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
99
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
100 // let mut builder = env_logger::Builder::new();
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
101 // builder.format(format).filter(Some("wort_templog"), loglevel);
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
102 // builder.init().unwrap();
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
103 // }
601
8c21df3711e2 rigid_config
Matt Johnston <matt@ucc.asn.au>
parents: 599
diff changeset
104
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
105 fn main() {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
106
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
107 let args = handle_args();
634
a5721c02d3ee build succeeds
Matt Johnston <matt@ucc.asn.au>
parents: 633
diff changeset
108 // setup_log(args.debug);
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
109 //env_logger::init().unwrap();
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
110
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
111 info!("wort-templog");
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
112 debug!("debug mode");
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
113
635
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
114 let r = run(&args.config, args.nowait, args.test);
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
115 if let Err(e) = r {
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
116 println!("Error running: {}", e);
4424a8b30f9c config crate wants everything to be lower case
Matt Johnston <matt@ucc.asn.au>
parents: 634
diff changeset
117 }
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
118 }