annotate rust/src/main.rs @ 631:c57821a60e51 rust

rust work in progress ?
author Matt Johnston <matt@ucc.asn.au>
date Sat, 06 Jul 2019 18:28:34 +0800
parents d5075136442f
children bde302def78e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
627
d5075136442f futures await
Matt Johnston <matt@ucc.asn.au>
parents: 626
diff changeset
1 #![feature(proc_macro, conservative_impl_trait, generators)]
631
c57821a60e51 rust work in progress ?
Matt Johnston <matt@ucc.asn.au>
parents: 627
diff changeset
2 #![feature(await_macro, async_await, futures_api)]
627
d5075136442f futures await
Matt Johnston <matt@ucc.asn.au>
parents: 626
diff changeset
3
d5075136442f futures await
Matt Johnston <matt@ucc.asn.au>
parents: 626
diff changeset
4
631
c57821a60e51 rust work in progress ?
Matt Johnston <matt@ucc.asn.au>
parents: 627
diff changeset
5 #[macro_use]
c57821a60e51 rust work in progress ?
Matt Johnston <matt@ucc.asn.au>
parents: 627
diff changeset
6 extern crate tokio;
c57821a60e51 rust work in progress ?
Matt Johnston <matt@ucc.asn.au>
parents: 627
diff changeset
7 #[macro_use]
c57821a60e51 rust work in progress ?
Matt Johnston <matt@ucc.asn.au>
parents: 627
diff changeset
8 extern crate futures;
c57821a60e51 rust work in progress ?
Matt Johnston <matt@ucc.asn.au>
parents: 627
diff changeset
9
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
10 #[macro_use]
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
11 extern crate log;
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
12 extern crate env_logger;
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
13 extern crate rustc_serialize;
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
14 extern crate time;
611
f3e39e2107fd still doesn't compile, improvements to TemplogError and tokio curl though
Matt Johnston <matt@ucc.asn.au>
parents: 609
diff changeset
15 extern crate serde_json;
623
03167105f6de ignore missing local.conf
Matt Johnston <matt@ucc.asn.au>
parents: 620
diff changeset
16 extern crate libc;
624
2710649ab71e read/write params local file. untested
Matt Johnston <matt@ucc.asn.au>
parents: 623
diff changeset
17 extern crate atomicwrites;
626
efcbe0d3afd6 fix to work with hyper
Matt Johnston <matt@ucc.asn.au>
parents: 624
diff changeset
18 extern crate hyper;
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
19
604
278f1002b5c7 sensor regex, custom error type
Matt Johnston <matt@ucc.asn.au>
parents: 603
diff changeset
20 #[macro_use]
278f1002b5c7 sensor regex, custom error type
Matt Johnston <matt@ucc.asn.au>
parents: 603
diff changeset
21 extern crate lazy_static;
278f1002b5c7 sensor regex, custom error type
Matt Johnston <matt@ucc.asn.au>
parents: 603
diff changeset
22
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
23 #[macro_use]
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
24 extern crate serde_derive;
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
25 extern crate serde;
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
26
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
27 extern crate toml;
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
28
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
29 extern crate docopt;
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
30
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
31 use std::io;
588
038734052b20 fiddling with futures-rs instead
Matt Johnston <matt@ucc.asn.au>
parents: 587
diff changeset
32
631
c57821a60e51 rust work in progress ?
Matt Johnston <matt@ucc.asn.au>
parents: 627
diff changeset
33 use tokio_core::reactor:: Core;
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
34 use futures::{Stream,Sink,Future};
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
35 use futures::sync::{mpsc};
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
36 use sensor::Sensor;
589
f2508125adf1 Try using traits for periodic stream
Matt Johnston <matt@ucc.asn.au>
parents: 588
diff changeset
37
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
38 mod config;
590
dccd8504aa38 it runs
Matt Johnston <matt@ucc.asn.au>
parents: 589
diff changeset
39 mod sensor;
609
7bda01659426 not building, paramwaiter work
Matt Johnston <matt@ucc.asn.au>
parents: 607
diff changeset
40 mod fridge;
592
03b48ec0bb03 fridge, types, configwaiter
Matt Johnston <matt@ucc.asn.au>
parents: 591
diff changeset
41 mod types;
615
f153aec221be move Params, epoch code
Matt Johnston <matt@ucc.asn.au>
parents: 614
diff changeset
42 mod params;
591
4a944663fa8d more skeleton
Matt Johnston <matt@ucc.asn.au>
parents: 590
diff changeset
43
592
03b48ec0bb03 fridge, types, configwaiter
Matt Johnston <matt@ucc.asn.au>
parents: 591
diff changeset
44 use types::*;
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
45 use config::Config;
588
038734052b20 fiddling with futures-rs instead
Matt Johnston <matt@ucc.asn.au>
parents: 587
diff changeset
46
603
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
47 fn run(config: &Config, nowait: bool, testmode: bool) {
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
48
588
038734052b20 fiddling with futures-rs instead
Matt Johnston <matt@ucc.asn.au>
parents: 587
diff changeset
49 let mut core = Core::new().unwrap();
038734052b20 fiddling with futures-rs instead
Matt Johnston <matt@ucc.asn.au>
parents: 587
diff changeset
50 let handle = core.handle();
587
646f03870762 trying rust
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
51
615
f153aec221be move Params, epoch code
Matt Johnston <matt@ucc.asn.au>
parents: 614
diff changeset
52 let params = params::Params::load(&config);
f153aec221be move Params, epoch code
Matt Johnston <matt@ucc.asn.au>
parents: 614
diff changeset
53 let mut fridge = fridge::Fridge::new(&config, nowait, params, &handle);
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
54
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
55 let sensor_stream = if testmode {
603
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
56 sensor::TestSensor::new(config).stream(&handle)
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
57 } else {
603
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
58 sensor::OneWireSensor::new(config).stream(&handle)
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
59 };
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
60
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
61 // Send the sensors of interest to the fridge (fridge_reading_s),
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
62 // while streaming them all to the web sender.
620
8fda564cc46f fridge work
Matt Johnston <matt@ucc.asn.au>
parents: 616
diff changeset
63 let (fridge_reading_s, fridge_reading_r) = mpsc::channel(1);
8fda564cc46f fridge work
Matt Johnston <matt@ucc.asn.au>
parents: 616
diff changeset
64 let fridge_reading_r = fridge_reading_r.map_err(|e| TemplogError::new("Problem with fridge_reading_r channel"));
8fda564cc46f fridge work
Matt Johnston <matt@ucc.asn.au>
parents: 616
diff changeset
65 let sensor_stream = sensor_stream.map(|r| {
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
66 debug!("sensors {:?}", r);
603
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
67 let msg = fridge::Message::Sensor {
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
68 wort: r.get_temp(&config.WORT_NAME),
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
69 fridge: r.get_temp(&config.FRIDGE_NAME)
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
70 };
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
71 let t = fridge_reading_s.clone().send(msg)
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
72 .map(|_| ())
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
73 .map_err(|e| {
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
74 warn!("Send error in fridge_reading_s: {}", e.to_string());
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
75 ()
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents: 594
diff changeset
76 });
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
77 handle.spawn(t);
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
78 r
588
038734052b20 fiddling with futures-rs instead
Matt Johnston <matt@ucc.asn.au>
parents: 587
diff changeset
79 });
587
646f03870762 trying rust
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
80
627
d5075136442f futures await
Matt Johnston <matt@ucc.asn.au>
parents: 626
diff changeset
81 let param_stream = params::ParamWaiter::stream(config.clone(), handle.clone());
620
8fda564cc46f fridge work
Matt Johnston <matt@ucc.asn.au>
parents: 616
diff changeset
82 let param_stream = param_stream.map(|p| {
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
83 fridge::Message::Params(p)
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
84 });
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
85
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
86 let timeouts = fridge.wakeups();
591
4a944663fa8d more skeleton
Matt Johnston <matt@ucc.asn.au>
parents: 590
diff changeset
87
620
8fda564cc46f fridge work
Matt Johnston <matt@ucc.asn.au>
parents: 616
diff changeset
88 // forward all the different types of messages to the fridge
8fda564cc46f fridge work
Matt Johnston <matt@ucc.asn.au>
parents: 616
diff changeset
89 let all_fridge = param_stream.select(timeouts).select(fridge_reading_r).forward(fridge) .map(|_| () );
592
03b48ec0bb03 fridge, types, configwaiter
Matt Johnston <matt@ucc.asn.au>
parents: 591
diff changeset
90
620
8fda564cc46f fridge work
Matt Johnston <matt@ucc.asn.au>
parents: 616
diff changeset
91 let all_readings = sensor_stream.for_each(|_| Ok(()));
8fda564cc46f fridge work
Matt Johnston <matt@ucc.asn.au>
parents: 616
diff changeset
92
8fda564cc46f fridge work
Matt Johnston <matt@ucc.asn.au>
parents: 616
diff changeset
93 // run forever
594
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
94 let all = all_fridge.select(all_readings);
aff50ee77252 rust working better now with streams and sinks.
Matt Johnston <matt@ucc.asn.au>
parents: 593
diff changeset
95 core.run(all).ok();
587
646f03870762 trying rust
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
96 }
646f03870762 trying rust
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
97
598
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
98 const USAGE: &'static str = "\
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
99 Wort Temperature
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
100 Matt Johnston 2017 [email protected]
598
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
101 Usage: wort-templog [--help] [--new] [--daemon] [--debug] [--test] [--defconf] [--thisconf] [--nowait]
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
102
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
103 Options:
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
104 -h, --help
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
105 --new Replace existing running instance
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
106 -D, --daemon Run in background
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
107 -d, --debug
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
108 -t, --test Use fake sensors etc
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
109 --nowait Skip initial fridge wait
615
f153aec221be move Params, epoch code
Matt Johnston <matt@ucc.asn.au>
parents: 614
diff changeset
110 --defconf Print default config (customise in local.conf)
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
111 --thisconf Print used config
598
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
112 ";
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
113
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
114 #[derive(RustcDecodable)]
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
115 struct Args {
599
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
116 flag_new: bool,
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
117 flag_daemon: bool,
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
118 flag_debug: bool,
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
119 flag_test: bool,
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
120 flag_defconf: bool,
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
121 flag_thisconf: bool,
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
122 flag_nowait: bool,
598
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
123 }
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
124
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
125 fn setup_log(debug: bool) {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
126 let loglevel = if debug {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
127 log::LogLevelFilter::Debug
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
128 } else {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
129 log::LogLevelFilter::Info
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
130 };
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
131
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
132 let format = |record: &log::LogRecord| {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
133 let datefmt = "%Y-%m-%d %I:%M:%S %p";
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
134 let ts = time::strftime(datefmt, &time::now()).unwrap();
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
135 format!("{}: {} - {}", ts, record.level(), record.args())
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
136 };
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
137
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
138
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
139 let mut builder = env_logger::LogBuilder::new();
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
140 builder.format(format).filter(Some("wort_templog"), loglevel);
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
141 builder.init().unwrap();
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
142 }
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
143
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
144 fn handle_args() -> Args {
598
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
145 let args: Args = docopt::Docopt::new(USAGE).and_then(|d| d.decode()).unwrap_or_else(|e| e.exit());
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
146
599
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
147 if args.flag_defconf {
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
148 println!("Default configuration:\n{}\n\n{}",
615
f153aec221be move Params, epoch code
Matt Johnston <matt@ucc.asn.au>
parents: 614
diff changeset
149 "(custom options go in local.conf)",
599
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
150 config::Config::default().to_toml_string());
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
151 std::process::exit(0);
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
152 }
599
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
153 args
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
154 }
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
155
601
8c21df3711e2 rigid_config
Matt Johnston <matt@ucc.asn.au>
parents: 599
diff changeset
156 fn load_config() -> Config {
603
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
157 let nconfig = config::Config::default();
601
8c21df3711e2 rigid_config
Matt Johnston <matt@ucc.asn.au>
parents: 599
diff changeset
158
615
f153aec221be move Params, epoch code
Matt Johnston <matt@ucc.asn.au>
parents: 614
diff changeset
159 let conf_filename = "local.conf";
601
8c21df3711e2 rigid_config
Matt Johnston <matt@ucc.asn.au>
parents: 599
diff changeset
160 nconfig.merge_file(conf_filename)
8c21df3711e2 rigid_config
Matt Johnston <matt@ucc.asn.au>
parents: 599
diff changeset
161 .unwrap_or_else(|e| {
623
03167105f6de ignore missing local.conf
Matt Johnston <matt@ucc.asn.au>
parents: 620
diff changeset
162 if let TemplogErrorKind::Io(ref ioe) = *e.kind() {
03167105f6de ignore missing local.conf
Matt Johnston <matt@ucc.asn.au>
parents: 620
diff changeset
163 if let Some(errno) = ioe.raw_os_error() {
03167105f6de ignore missing local.conf
Matt Johnston <matt@ucc.asn.au>
parents: 620
diff changeset
164 if errno == libc::ENOENT {
03167105f6de ignore missing local.conf
Matt Johnston <matt@ucc.asn.au>
parents: 620
diff changeset
165 return nconfig;
03167105f6de ignore missing local.conf
Matt Johnston <matt@ucc.asn.au>
parents: 620
diff changeset
166 }
03167105f6de ignore missing local.conf
Matt Johnston <matt@ucc.asn.au>
parents: 620
diff changeset
167 }
03167105f6de ignore missing local.conf
Matt Johnston <matt@ucc.asn.au>
parents: 620
diff changeset
168 }
03167105f6de ignore missing local.conf
Matt Johnston <matt@ucc.asn.au>
parents: 620
diff changeset
169
601
8c21df3711e2 rigid_config
Matt Johnston <matt@ucc.asn.au>
parents: 599
diff changeset
170 println!("Couldn't parse {}: {}", conf_filename, e);
8c21df3711e2 rigid_config
Matt Johnston <matt@ucc.asn.au>
parents: 599
diff changeset
171 std::process::exit(1);
8c21df3711e2 rigid_config
Matt Johnston <matt@ucc.asn.au>
parents: 599
diff changeset
172 })
8c21df3711e2 rigid_config
Matt Johnston <matt@ucc.asn.au>
parents: 599
diff changeset
173 }
8c21df3711e2 rigid_config
Matt Johnston <matt@ucc.asn.au>
parents: 599
diff changeset
174
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
175 fn main() {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
176
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
177 let args = handle_args();
599
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
178 setup_log(args.flag_debug);
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
179 //env_logger::init().unwrap();
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
180
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
181 info!("wort-templog");
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
182 debug!("debug mode");
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
183
603
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
184 let config = load_config();
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
185
599
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
186 if args.flag_thisconf {
598
d4fbfb5c46ff broken update of versions of things
Matt Johnston <matt@ucc.asn.au>
parents: 597
diff changeset
187 println!("Current configuration:\n\n{}",
603
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
188 config.to_toml_string());
599
f71cf1ad745f updated toml serde works OK
Matt Johnston <matt@ucc.asn.au>
parents: 598
diff changeset
189 std::process::exit(0);
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
190 }
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
191
603
b45b8b4cf0f5 get rid of lazy_static, config is passed around
Matt Johnston <matt@ucc.asn.au>
parents: 601
diff changeset
192 run(&config, args.flag_nowait, args.flag_test);
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
193 }