use clap::Clap; #[derive(Clap, PartialEq, Debug)] pub enum ExtensionSet { Images, Audio, Videos, Media, Documents, Archives, } impl ExtensionSet { pub fn extensions(&self) -> Vec<&str> { match self { Self::Images => mime_guess::get_mime_extensions_str("image/*"), Self::Videos => mime_guess::get_mime_extensions_str("video/*"), Self::Audio => mime_guess::get_mime_extensions_str("audio/*"), Self::Documents => Some( &[ "pdf", "doc", "docx", "ppt", "pptx", "xls", "xlsx", "csv", "tsv", "odt", "ods", "odp", "oda", "rtf", "ps", ][..], ), // many compressed file types follow the name scheme "application/x.+compressed.*" - maybe this can be used // somehow to extract extensions for compressed files from mime_guess? Self::Archives => Some(&["zip", "tar", "gz", "zst", "xz", "rar", "7z", "bz", "bz2"][..]), _ => todo!(), } .unwrap() .to_vec() } }