ex_cli/fs/
flags.rs

1use std::fs::FileType;
2
3#[derive(Clone, Copy, PartialEq)]
4pub enum FileFlags {
5    File,
6    Dir,
7    Link,
8    Other,
9}
10
11impl FileFlags {
12    pub fn from_type(file_type: FileType, zip_archive: bool) -> Self {
13        if file_type.is_dir() || zip_archive {
14            Self::Dir
15        } else if file_type.is_file() {
16            Self::File
17        } else if file_type.is_symlink() {
18            Self::Link
19        } else {
20            Self::Other
21        }
22    }
23
24    #[cfg(test)]
25    pub fn from_char(file_type: char) -> Self {
26        match file_type {
27            'f' => Self::File,
28            'd' => Self::Dir,
29            'l' => Self::Link,
30            _ => Self::Other,
31        }
32    }
33}