From 9a39c056e8040a4a6904b2de17efc36430b62b5c Mon Sep 17 00:00:00 2001
From: Greg <gregory.mkv@gmail.com>
Date: Wed, 15 Apr 2020 17:22:09 -0400
Subject: [PATCH] implement unset

---
 src/main.rs     | 6 ++++++
 src/mimeapps.rs | 7 +++++++
 2 files changed, 13 insertions(+)

diff --git a/src/main.rs b/src/main.rs
index d308d67..16d666d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -26,6 +26,9 @@ enum Cmd {
         mime: Mime,
         handler: Handler,
     },
+    Unset {
+        mime: Mime
+    }
 }
 
 fn main() -> Result<()> {
@@ -55,6 +58,9 @@ fn main() -> Result<()> {
         },
         Cmd::List => {
             apps.print()?;
+        },
+        Cmd::Unset { mime } => {
+            apps.remove_handler(&mime)?;
         }
     };
 
diff --git a/src/mimeapps.rs b/src/mimeapps.rs
index e2d6fc9..057dab7 100644
--- a/src/mimeapps.rs
+++ b/src/mimeapps.rs
@@ -21,6 +21,13 @@ impl MimeApps {
         self.save()?;
         Ok(())
     }
+    pub fn remove_handler(&mut self, mime: &Mime) -> Result<()> {
+        if let Some(_removed) = self.default_apps.remove(mime) {
+            self.save()?;
+        }
+
+        Ok(())
+    }
     pub fn get_handler(&self, mime: &Mime) -> Result<Handler> {
         self.default_apps
             .get(mime)