summaryrefslogtreecommitdiffstats
path: root/examples/watch/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/watch/main.rs')
-rw-r--r--examples/watch/main.rs81
1 files changed, 0 insertions, 81 deletions
diff --git a/examples/watch/main.rs b/examples/watch/main.rs
deleted file mode 100644
index ca83572..0000000
--- a/examples/watch/main.rs
+++ /dev/null
@@ -1,81 +0,0 @@
-#![allow(deprecated)]
-use config::{Config, File};
-use notify::{Event, RecommendedWatcher, RecursiveMode, Watcher};
-use std::collections::HashMap;
-use std::path::Path;
-use std::sync::mpsc::channel;
-use std::sync::RwLock;
-use std::time::Duration;
-
-lazy_static::lazy_static! {
- static ref SETTINGS: RwLock<Config> = RwLock::new({
- let mut settings = Config::default();
- settings.merge(File::with_name("examples/watch/Settings.toml")).unwrap();
-
- settings
- });
-}
-
-fn show() {
- println!(
- " * Settings :: \n\x1b[31m{:?}\x1b[0m",
- SETTINGS
- .read()
- .unwrap()
- .clone()
- .try_deserialize::<HashMap<String, String>>()
- .unwrap()
- );
-}
-
-fn watch() {
- // Create a channel to receive the events.
- let (tx, rx) = channel();
-
- // Automatically select the best implementation for your platform.
- // You can also access each implementation directly e.g. INotifyWatcher.
- let mut watcher: RecommendedWatcher = Watcher::new(
- tx,
- notify::Config::default().with_poll_interval(Duration::from_secs(2)),
- )
- .unwrap();
-
- // Add a path to be watched. All files and directories at that path and
- // below will be monitored for changes.
- watcher
- .watch(
- Path::new("examples/watch/Settings.toml"),
- RecursiveMode::NonRecursive,
- )
- .unwrap();
-
- // This is a simple loop, but you may want to use more complex logic here,
- // for example to handle I/O.
- loop {
- match rx.recv() {
- Ok(Ok(Event {
- kind: notify::event::EventKind::Modify(_),
- ..
- })) => {
- println!(" * Settings.toml written; refreshing configuration ...");
- SETTINGS.write().unwrap().refresh().unwrap();
- show();
- }
-
- Err(e) => println!("watch error: {:?}", e),
-
- _ => {
- // Ignore event
- }
- }
- }
-}
-
-fn main() {
- // This is just an example of what could be done, today
- // We do want this to be built-in to config-rs at some point
- // Feel free to take a crack at a PR
-
- show();
- watch();
-}