aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTeddy Wing2021-03-13 21:06:22 +0100
committerTeddy Wing2021-03-13 21:23:28 +0100
commit9d9a69973193597bf6c08822a96a851c9660d6d0 (patch)
tree113845f92cc9fdadc01c3297a2ff7efff700c129 /src
parent4606b115d29a62b3a9b4fe01a8538abe11d53af1 (diff)
downloadmutt-ottolangy-9d9a69973193597bf6c08822a96a851c9660d6d0.tar.bz2
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.
Diffstat (limited to 'src')
-rw-r--r--src/main.rs36
1 files changed, 34 insertions, 2 deletions
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<String, Box<dyn Error>> {
@@ -41,3 +62,14 @@ fn get_email_body(email: &[u8]) -> Result<String, Box<dyn Error>> {
Err("parse".into())
}
+
+fn write_attribution(config: &str) -> Result<(), Box<dyn Error>> {
+ 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(())
+}