ex-cli 1.22.0

Command line tool to find, filter, sort and list files.
Documentation
use std::fs::FileType;

#[derive(Clone, Copy, PartialEq)]
pub enum FileFlags {
    File,   // (regular files)
    Dir,    // (directories)
    Link,   // (symbolic links)
    Block,  // (block files, e.g. disk devices)
    Char,   // (character files, e.g. serial ports)
    Pipe,   // (named pipes)
    Socket, // (socket files)
    Other,
}

impl FileFlags {
    #[cfg(unix)]
    pub fn from_type(file_type: FileType, zip_archive: bool) -> Self {
        use std::os::unix::fs::FileTypeExt;
        if file_type.is_dir() || zip_archive {
            Self::Dir
        } else if file_type.is_file() {
            Self::File
        } else if file_type.is_symlink() {
            Self::Link
        } else if file_type.is_block_device() {
            Self::Block
        } else if file_type.is_char_device() {
            Self::Char
        } else if file_type.is_fifo() {
            Self::Pipe
        } else if file_type.is_socket() {
            Self::Socket
        } else {
            Self::Other
        }
    }

    #[cfg(not(unix))]
    pub fn from_type(file_type: FileType, zip_archive: bool) -> Self {
        if file_type.is_dir() || zip_archive {
            Self::Dir
        } else if file_type.is_file() {
            Self::File
        } else if file_type.is_symlink() {
            Self::Link
        } else {
            Self::Other
        }
    }

    #[cfg(test)]
    pub fn from_char(file_type: char) -> Self {
        match file_type {
            'f' => Self::File,
            'd' => Self::Dir,
            'l' => Self::Link,
            _ => Self::Other,
        }
    }
}