From 9d9a69973193597bf6c08822a96a851c9660d6d0 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sat, 13 Mar 2021 21:06:22 +0100 Subject: Write an attribution config file Set attribution config strings for French and English. If the input email's body language is in French, set my French attribution string. Otherwise use English. Write the attribution string to a config file at `~/.local/share/ottolangy/attribution.muttrc`. We can then source this config file to set the attribution. --- src/main.rs | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 433018f..d98d998 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,21 @@ use mailparse; -use whatlang; +use whatlang::{self, Lang}; +use xdg; use std::error::Error; -use std::io::{self, Read}; +use std::fs::File; +use std::io::{self, Read, Write}; + + +const PROGRAM_NAME: &'static str = "ottolangy"; +const MUTTRC_FILENAME: &'static str = "attribution.muttrc"; + +const ATTRIBUTION_FR: &'static str = + r#"set attribution = "Le %{%e %b. %Y à %H:%M %Z}, %f a écrit:" +"#; +const ATTRIBUTION_EN: &'static str = + r#"set attribution = "On %{%b %e, %Y, at %I:%M %p %Z}, %f wrote:" +"#; fn main() { @@ -16,6 +29,14 @@ fn main() { let lang_info = whatlang::detect(&body).unwrap(); println!("{:?}", lang_info); + + let attribution_config = if lang_info.lang() == Lang::Fra { + ATTRIBUTION_FR + } else { + ATTRIBUTION_EN + }; + + write_attribution(&attribution_config).unwrap(); } fn get_email_body(email: &[u8]) -> Result> { @@ -41,3 +62,14 @@ fn get_email_body(email: &[u8]) -> Result> { Err("parse".into()) } + +fn write_attribution(config: &str) -> Result<(), Box> { + let xdg_dirs = xdg::BaseDirectories::with_prefix(PROGRAM_NAME).unwrap(); + + let muttrc_path = xdg_dirs.place_data_file(MUTTRC_FILENAME).unwrap(); + + let mut file = File::create(muttrc_path).unwrap(); + file.write_all(config.as_bytes()).unwrap(); + + Ok(()) +} -- cgit v1.2.3