config.rs (1426B)
1 use std::collections::HashMap;
2 use std::path::Path;
3
4 #[derive(Debug)]
5 pub struct Config {
6 pub nick: String,
7 pub twtfile: String,
8 pub twturl: String,
9 pub pre_tweet_hook: String,
10 pub post_tweet_hook: String,
11 pub limit_timeline: usize,
12 pub use_abs_time: bool,
13 pub following: HashMap<String, String>,
14 }
15
16 impl Config {
17 pub fn new(config_path: &Path) -> Config {
18 use ini::Ini;
19
20 let config = Ini::load_from_file(config_path).unwrap();
21 let twtxt_config = config.section(Some("twtxt".to_owned())).unwrap();
22
23 let following = config
24 .section(Some("following".to_owned()))
25 .unwrap()
26 .to_owned();
27 // Parse hook commands.
28 let pre_tweet_hook = strfmt::strfmt(&twtxt_config["pre_tweet_hook"], twtxt_config).unwrap();
29 let post_tweet_hook =
30 strfmt::strfmt(&twtxt_config["post_tweet_hook"], twtxt_config).unwrap();
31
32 Config {
33 nick: twtxt_config["nick"].to_owned(),
34 twtfile: twtxt_config["twtfile"].to_owned(),
35 twturl: twtxt_config["twturl"].to_owned(),
36 pre_tweet_hook: pre_tweet_hook,
37 post_tweet_hook: post_tweet_hook,
38 limit_timeline: twtxt_config["limit_timeline"].parse::<usize>().unwrap(),
39 use_abs_time: twtxt_config["use_abs_time"].parse::<bool>().unwrap(),
40 following: following,
41 }
42 }
43 }