|
|
@@ -5,7 +5,10 @@ use crate::options::flags;
|
|
|
use crate::options::parser::MatchedFlags;
|
|
|
|
|
|
|
|
|
-static OPTIONS: &str = r##"
|
|
|
+static USAGE: &str = r##"Usage:
|
|
|
+ exa [options] [files...]
|
|
|
+
|
|
|
+META OPTIONS
|
|
|
-?, --help show list of command-line options
|
|
|
-v, --version show version of exa
|
|
|
|
|
|
@@ -30,52 +33,40 @@ FILTERING AND SORTING OPTIONS
|
|
|
--group-directories-first list directories before other files
|
|
|
-D, --only-dirs list only directories
|
|
|
-I, --ignore-glob GLOBS glob patterns (pipe-separated) of files to ignore
|
|
|
- --git-ignore Ignore files mentioned in '.gitignore'
|
|
|
+ --git-ignore ignore files mentioned in '.gitignore'
|
|
|
Valid sort fields: name, Name, extension, Extension, size, type,
|
|
|
modified, accessed, created, inode, and none.
|
|
|
date, time, old, and new all refer to modified.
|
|
|
-"##;
|
|
|
|
|
|
-static LONG_OPTIONS: &str = r##"
|
|
|
LONG VIEW OPTIONS
|
|
|
- -b, --binary list file sizes with binary prefixes
|
|
|
- -B, --bytes list file sizes in bytes, without any prefixes
|
|
|
- -g, --group list each file's group
|
|
|
- -h, --header add a header row to each column
|
|
|
- -H, --links list each file's number of hard links
|
|
|
- -i, --inode list each file's inode number
|
|
|
- -m, --modified use the modified timestamp field
|
|
|
- -S, --blocks show number of file system blocks
|
|
|
- -t, --time FIELD which timestamp field to list (modified, accessed, created)
|
|
|
- -u, --accessed use the accessed timestamp field
|
|
|
- -U, --created use the created timestamp field
|
|
|
- --changed use the changed timestamp field
|
|
|
- --time-style how to format timestamps (default, iso, long-iso, full-iso)
|
|
|
- --no-permissions suppress the permissions field
|
|
|
- --no-filesize suppress the filesize field
|
|
|
- --no-user suppress the user field
|
|
|
- --no-time suppress the time field"##;
|
|
|
-
|
|
|
-static GIT_HELP: &str = r##" --git list each file's Git status, if tracked or ignored"##;
|
|
|
-static EXTENDED_HELP: &str = r##" -@, --extended list each file's extended attributes and sizes"##;
|
|
|
-static OCTAL_HELP: &str = r##" --octal-permissions list each file's permission in octal format"##;
|
|
|
+ -b, --binary list file sizes with binary prefixes
|
|
|
+ -B, --bytes list file sizes in bytes, without any prefixes
|
|
|
+ -g, --group list each file's group
|
|
|
+ -h, --header add a header row to each column
|
|
|
+ -H, --links list each file's number of hard links
|
|
|
+ -i, --inode list each file's inode number
|
|
|
+ -m, --modified use the modified timestamp field
|
|
|
+ -S, --blocks show number of file system blocks
|
|
|
+ -t, --time FIELD which timestamp field to list (modified, accessed, created)
|
|
|
+ -u, --accessed use the accessed timestamp field
|
|
|
+ -U, --created use the created timestamp field
|
|
|
+ --changed use the changed timestamp field
|
|
|
+ --time-style how to format timestamps (default, iso, long-iso, full-iso)
|
|
|
+ --no-permissions suppress the permissions field
|
|
|
+ --octal-permissions list each file's permission in octal format
|
|
|
+ --no-filesize suppress the filesize field
|
|
|
+ --no-user suppress the user field
|
|
|
+ --no-time suppress the time field"##;
|
|
|
+
|
|
|
+static GIT_HELP: &str = r##" --git list each file's Git status, if tracked or ignored"##;
|
|
|
+static EXTENDED_HELP: &str = r##" -@, --extended list each file's extended attributes and sizes"##;
|
|
|
|
|
|
|
|
|
/// All the information needed to display the help text, which depends
|
|
|
/// on which features are enabled and whether the user only wants to
|
|
|
/// see one section’s help.
|
|
|
#[derive(PartialEq, Debug, Copy, Clone)]
|
|
|
-pub struct HelpString {
|
|
|
-
|
|
|
- /// Only show the help for the long section, not all the help.
|
|
|
- only_long: bool,
|
|
|
-
|
|
|
- /// Whether the --git option should be included in the help.
|
|
|
- git: bool,
|
|
|
-
|
|
|
- /// Whether the --extended option should be included in the help.
|
|
|
- xattrs: bool,
|
|
|
-}
|
|
|
+pub struct HelpString;
|
|
|
|
|
|
impl HelpString {
|
|
|
|
|
|
@@ -88,10 +79,7 @@ impl HelpString {
|
|
|
/// errors when the user wants help is kind of petty!
|
|
|
pub fn deduce(matches: &MatchedFlags<'_>) -> Option<Self> {
|
|
|
if matches.count(&flags::HELP) > 0 {
|
|
|
- let only_long = matches.count(&flags::LONG) > 0;
|
|
|
- let git = cfg!(feature="git");
|
|
|
- let xattrs = xattr::ENABLED;
|
|
|
- Some(Self { only_long, git, xattrs })
|
|
|
+ Some(Self)
|
|
|
}
|
|
|
else {
|
|
|
None
|
|
|
@@ -104,24 +92,16 @@ impl fmt::Display for HelpString {
|
|
|
/// Format this help options into an actual string of help
|
|
|
/// text to be displayed to the user.
|
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
|
|
|
- writeln!(f, "Usage:\n exa [options] [files...]")?;
|
|
|
+ writeln!(f, "{}", USAGE)?;
|
|
|
|
|
|
- if ! self.only_long {
|
|
|
- write!(f, "{}", OPTIONS)?;
|
|
|
+ if cfg!(feature="git") {
|
|
|
+ writeln!(f, "{}", GIT_HELP)?;
|
|
|
}
|
|
|
|
|
|
- write!(f, "{}", LONG_OPTIONS)?;
|
|
|
-
|
|
|
- if self.git {
|
|
|
- write!(f, "\n{}", GIT_HELP)?;
|
|
|
- }
|
|
|
-
|
|
|
- if self.xattrs {
|
|
|
- write!(f, "\n{}", EXTENDED_HELP)?;
|
|
|
+ if xattr::ENABLED {
|
|
|
+ writeln!(f, "{}", EXTENDED_HELP)?;
|
|
|
}
|
|
|
|
|
|
- write!(f, "\n{}", OCTAL_HELP)?;
|
|
|
-
|
|
|
Ok(())
|
|
|
}
|
|
|
}
|