aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.rs8
-rw-r--r--src/main.rs10
2 files changed, 15 insertions, 3 deletions
diff --git a/src/config.rs b/src/config.rs
index 7280aed..86ab51a 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -10,9 +10,17 @@ const CONFIG_NAME: &str = "almanac.toml";
#[derive(Deserialize)]
pub struct Config {
pub cals: Vec<String>,
+ pub period: String,
}
impl Config {
+ pub fn new() -> Config {
+ Config {
+ cals: vec![],
+ period: "".to_string(),
+ }
+ }
+
pub fn parse() -> Result<Config, ConfigError> {
let config_path = match dirs::config_dir() {
Some(path) => path,
diff --git a/src/main.rs b/src/main.rs
index a65ace0..64fdf05 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -15,19 +15,23 @@ use almanac::Event;
use almanac::Config;
fn main() {
+ let conf = Config::parse().unwrap_or(Config::new());
let mut args = env::args().skip(1);
let period_arg = match args.next() {
Some(arg) => arg,
None => {
- println!("Usage: almanac day|week|month [ical ...]");
- return;
+ if conf.period.is_empty() {
+ println!("Usage: almanac day|week|month [ical ...]");
+ return;
+ } else {
+ conf.period
+ }
}
};
let (first, last) = period(&period_arg);
let mut calendars: Vec<_> = args.map(|arg| ics_calendar(&arg)).collect();
if calendars.is_empty() {
- let conf = Config::parse().unwrap();
for cal in &conf.cals {
calendars.push(ics_calendar(cal))
}