mirror of
https://github.com/uutils/coreutils.git
synced 2025-07-07 21:45:01 +00:00
l10n: port ls for translation + add french
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
This commit is contained in:
parent
1675c3e981
commit
dc9dd3fb70
4 changed files with 367 additions and 156 deletions
|
@ -2,3 +2,119 @@ ls-about = List directory contents.
|
|||
Ignore files and directories starting with a '.' by default
|
||||
ls-usage = ls [OPTION]... [FILE]...
|
||||
ls-after-help = The TIME_STYLE argument can be full-iso, long-iso, iso, locale or +FORMAT. FORMAT is interpreted like in date. Also the TIME_STYLE environment variable sets the default style to use.
|
||||
|
||||
# Error messages
|
||||
ls-error-invalid-line-width = invalid line width: {$width}
|
||||
ls-error-general-io = general io error: {$error}
|
||||
ls-error-cannot-access-no-such-file = cannot access '{$path}': No such file or directory
|
||||
ls-error-cannot-access-operation-not-permitted = cannot access '{$path}': Operation not permitted
|
||||
ls-error-cannot-open-directory-permission-denied = cannot open directory '{$path}': Permission denied
|
||||
ls-error-cannot-open-file-permission-denied = cannot open file '{$path}': Permission denied
|
||||
ls-error-cannot-open-directory-bad-descriptor = cannot open directory '{$path}': Bad file descriptor
|
||||
ls-error-unknown-io-error = unknown io error: '{$path}', '{$error}'
|
||||
ls-error-invalid-block-size = invalid --block-size argument {$size}
|
||||
ls-error-dired-and-zero-incompatible = --dired and --zero are incompatible
|
||||
ls-error-not-listing-already-listed = {$path}: not listing already-listed directory
|
||||
ls-error-invalid-time-style = invalid --time-style argument {$style}
|
||||
Possible values are: {$values}
|
||||
|
||||
For more information try --help
|
||||
|
||||
# Help messages
|
||||
ls-help-print-help = Print help information.
|
||||
ls-help-set-display-format = Set the display format.
|
||||
ls-help-display-files-columns = Display the files in columns.
|
||||
ls-help-display-detailed-info = Display detailed information.
|
||||
ls-help-list-entries-rows = List entries in rows instead of in columns.
|
||||
ls-help-assume-tab-stops = Assume tab stops at each COLS instead of 8
|
||||
ls-help-list-entries-commas = List entries separated by commas.
|
||||
ls-help-list-entries-nul = List entries separated by ASCII NUL characters.
|
||||
ls-help-generate-dired-output = generate output designed for Emacs' dired (Directory Editor) mode
|
||||
ls-help-hyperlink-filenames = hyperlink file names WHEN
|
||||
ls-help-list-one-file-per-line = List one file per line.
|
||||
ls-help-long-format-no-group = Long format without group information.
|
||||
Identical to --format=long with --no-group.
|
||||
ls-help-long-no-owner = Long format without owner information.
|
||||
ls-help-long-numeric-uid-gid = -l with numeric UIDs and GIDs.
|
||||
ls-help-set-quoting-style = Set quoting style.
|
||||
ls-help-literal-quoting-style = Use literal quoting style. Equivalent to `--quoting-style=literal`
|
||||
ls-help-escape-quoting-style = Use escape quoting style. Equivalent to `--quoting-style=escape`
|
||||
ls-help-c-quoting-style = Use C quoting style. Equivalent to `--quoting-style=c`
|
||||
ls-help-replace-control-chars = Replace control characters with '?' if they are not escaped.
|
||||
ls-help-show-control-chars = Show control characters 'as is' if they are not escaped.
|
||||
ls-help-show-time-field = Show time in <field>:
|
||||
access time (-u): atime, access, use;
|
||||
change time (-t): ctime, status.
|
||||
modification time: mtime, modification.
|
||||
birth time: birth, creation;
|
||||
ls-help-time-change = If the long listing format (e.g., -l, -o) is being used, print the
|
||||
status change time (the 'ctime' in the inode) instead of the modification
|
||||
time. When explicitly sorting by time (--sort=time or -t) or when not
|
||||
using a long listing format, sort according to the status change time.
|
||||
ls-help-time-access = If the long listing format (e.g., -l, -o) is being used, print the
|
||||
status access time instead of the modification time. When explicitly
|
||||
sorting by time (--sort=time or -t) or when not using a long listing
|
||||
format, sort according to the access time.
|
||||
ls-help-hide-pattern = do not list implied entries matching shell PATTERN (overridden by -a or -A)
|
||||
ls-help-ignore-pattern = do not list implied entries matching shell PATTERN
|
||||
ls-help-ignore-backups = Ignore entries which end with ~.
|
||||
ls-help-sort-by-field = Sort by <field>: name, none (-U), time (-t), size (-S), extension (-X) or width
|
||||
ls-help-sort-by-size = Sort by file size, largest first.
|
||||
ls-help-sort-by-time = Sort by modification time (the 'mtime' in the inode), newest first.
|
||||
ls-help-sort-by-version = Natural sort of (version) numbers in the filenames.
|
||||
ls-help-sort-by-extension = Sort alphabetically by entry extension.
|
||||
ls-help-sort-none = Do not sort; list the files in whatever order they are stored in the
|
||||
directory. This is especially useful when listing very large directories,
|
||||
since not doing any sorting can be noticeably faster.
|
||||
ls-help-dereference-all = When showing file information for a symbolic link, show information for the
|
||||
file the link references rather than the link itself.
|
||||
ls-help-dereference-dir-args = Do not follow symlinks except when they link to directories and are
|
||||
given as command line arguments.
|
||||
ls-help-dereference-args = Do not follow symlinks except when given as command line arguments.
|
||||
ls-help-no-group = Do not show group in long format.
|
||||
ls-help-author = Show author in long format. On the supported platforms,
|
||||
the author always matches the file owner.
|
||||
ls-help-all-files = Do not ignore hidden files (files with names that start with '.').
|
||||
ls-help-almost-all = In a directory, do not ignore all file names that start with '.',
|
||||
only ignore '.' and '..'.
|
||||
ls-help-directory = Only list the names of directories, rather than listing directory contents.
|
||||
This will not follow symbolic links unless one of `--dereference-command-line
|
||||
(-H)`, `--dereference (-L)`, or `--dereference-command-line-symlink-to-dir` is
|
||||
specified.
|
||||
ls-help-human-readable = Print human readable file sizes (e.g. 1K 234M 56G).
|
||||
ls-help-kibibytes = default to 1024-byte blocks for file system usage; used only with -s and per
|
||||
directory totals
|
||||
ls-help-si = Print human readable file sizes using powers of 1000 instead of 1024.
|
||||
ls-help-block-size = scale sizes by BLOCK_SIZE when printing them
|
||||
ls-help-print-inode = print the index number of each file
|
||||
ls-help-reverse-sort = Reverse whatever the sorting method is e.g., list files in reverse
|
||||
alphabetical order, youngest first, smallest first, or whatever.
|
||||
ls-help-recursive = List the contents of all directories recursively.
|
||||
ls-help-terminal-width = Assume that the terminal is COLS columns wide.
|
||||
ls-help-allocation-size = print the allocated size of each file, in blocks
|
||||
ls-help-color-output = Color output based on file type.
|
||||
ls-help-indicator-style = Append indicator with style WORD to entry names:
|
||||
none (default), slash (-p), file-type (--file-type), classify (-F)
|
||||
ls-help-classify = Append a character to each file name indicating the file type. Also, for
|
||||
regular files that are executable, append '*'. The file type indicators are
|
||||
'/' for directories, '@' for symbolic links, '|' for FIFOs, '=' for sockets,
|
||||
'>' for doors, and nothing for regular files. when may be omitted, or one of:
|
||||
none - Do not classify. This is the default.
|
||||
auto - Only classify if standard output is a terminal.
|
||||
always - Always classify.
|
||||
Specifying --classify and no when is equivalent to --classify=always. This will
|
||||
not follow symbolic links listed on the command line unless the
|
||||
--dereference-command-line (-H), --dereference (-L), or
|
||||
--dereference-command-line-symlink-to-dir options are specified.
|
||||
ls-help-file-type = Same as --classify, but do not append '*'
|
||||
ls-help-slash-directories = Append / indicator to directories.
|
||||
ls-help-time-style = time/date format with -l; see TIME_STYLE below
|
||||
ls-help-full-time = like -l --time-style=full-iso
|
||||
ls-help-context = print any security context of each file
|
||||
ls-help-group-directories-first = group directories before files; can be augmented with
|
||||
a --sort option, but any use of --sort=none (-U) disables grouping
|
||||
ls-invalid-quoting-style = {$program}: Ignoring invalid value of environment variable QUOTING_STYLE: '{$style}'
|
||||
ls-invalid-columns-width = ignoring invalid width in environment variable COLUMNS: {$width}
|
||||
ls-invalid-ignore-pattern = Invalid pattern for ignore: {$pattern}
|
||||
ls-invalid-hide-pattern = Invalid pattern for hide: {$pattern}
|
||||
ls-total = total {$size}
|
||||
|
|
120
src/uu/ls/locales/fr-FR.ftl
Normal file
120
src/uu/ls/locales/fr-FR.ftl
Normal file
|
@ -0,0 +1,120 @@
|
|||
ls-about = Lister le contenu des répertoires.
|
||||
Ignorer les fichiers et répertoires commençant par un '.' par défaut
|
||||
ls-usage = ls [OPTION]... [FICHIER]...
|
||||
ls-after-help = L'argument TIME_STYLE peut être full-iso, long-iso, iso, locale ou +FORMAT. FORMAT est interprété comme dans date. De plus, la variable d'environnement TIME_STYLE définit le style par défaut à utiliser.
|
||||
|
||||
# Messages d'erreur
|
||||
ls-error-invalid-line-width = largeur de ligne invalide : {$width}
|
||||
ls-error-general-io = erreur d'E/S générale : {$error}
|
||||
ls-error-cannot-access-no-such-file = impossible d'accéder à '{$path}' : Aucun fichier ou répertoire de ce type
|
||||
ls-error-cannot-access-operation-not-permitted = impossible d'accéder à '{$path}' : Opération non autorisée
|
||||
ls-error-cannot-open-directory-permission-denied = impossible d'ouvrir le répertoire '{$path}' : Permission refusée
|
||||
ls-error-cannot-open-file-permission-denied = impossible d'ouvrir le fichier '{$path}' : Permission refusée
|
||||
ls-error-cannot-open-directory-bad-descriptor = impossible d'ouvrir le répertoire '{$path}' : Mauvais descripteur de fichier
|
||||
ls-error-unknown-io-error = erreur d'E/S inconnue : '{$path}', '{$error}'
|
||||
ls-error-invalid-block-size = argument --block-size invalide {$size}
|
||||
ls-error-dired-and-zero-incompatible = --dired et --zero sont incompatibles
|
||||
ls-error-not-listing-already-listed = {$path} : ne liste pas un répertoire déjà listé
|
||||
ls-error-invalid-time-style = argument --time-style invalide {$style}
|
||||
Les valeurs possibles sont : {$values}
|
||||
|
||||
Pour plus d'informations, essayez --help
|
||||
|
||||
# Messages d'aide
|
||||
ls-help-print-help = Afficher les informations d'aide.
|
||||
ls-help-set-display-format = Définir le format d'affichage.
|
||||
ls-help-display-files-columns = Afficher les fichiers en colonnes.
|
||||
ls-help-display-detailed-info = Afficher des informations détaillées.
|
||||
ls-help-list-entries-rows = Lister les entrées en lignes au lieu de colonnes.
|
||||
ls-help-assume-tab-stops = Supposer des arrêts de tabulation à chaque COLS au lieu de 8
|
||||
ls-help-list-entries-commas = Lister les entrées séparées par des virgules.
|
||||
ls-help-list-entries-nul = Lister les entrées séparées par des caractères NUL ASCII.
|
||||
ls-help-generate-dired-output = générer une sortie conçue pour le mode dired (Directory Editor) d'Emacs
|
||||
ls-help-hyperlink-filenames = créer des hyperliens pour les noms de fichiers QUAND
|
||||
ls-help-list-one-file-per-line = Lister un fichier par ligne.
|
||||
ls-help-long-format-no-group = Format long sans informations de groupe.
|
||||
Identique à --format=long avec --no-group.
|
||||
ls-help-long-no-owner = Format long sans informations de propriétaire.
|
||||
ls-help-long-numeric-uid-gid = -l avec des UID et GID numériques.
|
||||
ls-help-set-quoting-style = Définir le style de citation.
|
||||
ls-help-literal-quoting-style = Utiliser le style de citation littéral. Équivalent à `--quoting-style=literal`
|
||||
ls-help-escape-quoting-style = Utiliser le style de citation d'échappement. Équivalent à `--quoting-style=escape`
|
||||
ls-help-c-quoting-style = Utiliser le style de citation C. Équivalent à `--quoting-style=c`
|
||||
ls-help-replace-control-chars = Remplacer les caractères de contrôle par '?' s'ils ne sont pas échappés.
|
||||
ls-help-show-control-chars = Afficher les caractères de contrôle 'tels quels' s'ils ne sont pas échappés.
|
||||
ls-help-show-time-field = Afficher l'heure dans <champ> :
|
||||
heure d'accès (-u) : atime, access, use ;
|
||||
heure de changement (-t) : ctime, status.
|
||||
heure de modification : mtime, modification.
|
||||
heure de création : birth, creation ;
|
||||
ls-help-time-change = Si le format de liste long (par ex., -l, -o) est utilisé, afficher
|
||||
l'heure de changement de statut (le 'ctime' dans l'inode) au lieu de l'heure
|
||||
de modification. Lors du tri explicite par heure (--sort=time ou -t) ou lors
|
||||
de l'absence de format de liste long, trier selon l'heure de changement de statut.
|
||||
ls-help-time-access = Si le format de liste long (par ex., -l, -o) est utilisé, afficher
|
||||
l'heure d'accès au statut au lieu de l'heure de modification. Lors du tri
|
||||
explicite par heure (--sort=time ou -t) ou lors de l'absence de format de
|
||||
liste long, trier selon l'heure d'accès.
|
||||
ls-help-hide-pattern = ne pas lister les entrées implicites correspondant au MOTIF shell (surchargé par -a ou -A)
|
||||
ls-help-ignore-pattern = ne pas lister les entrées implicites correspondant au MOTIF shell
|
||||
ls-help-ignore-backups = Ignorer les entrées qui se terminent par ~.
|
||||
ls-help-sort-by-field = Trier par <champ> : name, none (-U), time (-t), size (-S), extension (-X) ou width
|
||||
ls-help-sort-by-size = Trier par taille de fichier, le plus grand en premier.
|
||||
ls-help-sort-by-time = Trier par heure de modification (le 'mtime' dans l'inode), le plus récent en premier.
|
||||
ls-help-sort-by-version = Tri naturel des numéros (de version) dans les noms de fichiers.
|
||||
ls-help-sort-by-extension = Trier alphabétiquement par extension d'entrée.
|
||||
ls-help-sort-none = Ne pas trier ; lister les fichiers dans l'ordre où ils sont stockés dans le
|
||||
répertoire. Ceci est particulièrement utile lors de l'affichage de très grands répertoires,
|
||||
car ne pas trier peut être sensiblement plus rapide.
|
||||
ls-help-dereference-all = Lors de l'affichage d'informations de fichier pour un lien symbolique, afficher les informations pour le
|
||||
fichier référencé par le lien plutôt que le lien lui-même.
|
||||
ls-help-dereference-dir-args = Ne pas suivre les liens symboliques sauf quand ils pointent vers des répertoires et sont
|
||||
donnés comme arguments de ligne de commande.
|
||||
ls-help-dereference-args = Ne pas suivre les liens symboliques sauf quand ils sont donnés comme arguments de ligne de commande.
|
||||
ls-help-no-group = Ne pas afficher le groupe en format long.
|
||||
ls-help-author = Afficher l'auteur en format long. Sur les plateformes supportées,
|
||||
l'auteur correspond toujours au propriétaire du fichier.
|
||||
ls-help-all-files = Ne pas ignorer les fichiers cachés (fichiers dont les noms commencent par '.').
|
||||
ls-help-almost-all = Dans un répertoire, ne pas ignorer tous les noms de fichiers qui commencent par '.',
|
||||
ignorer seulement '.' et '..'.
|
||||
ls-help-directory = Lister seulement les noms des répertoires, plutôt que le contenu des répertoires.
|
||||
Ceci ne suivra pas les liens symboliques à moins qu'une des options
|
||||
`--dereference-command-line (-H)`, `--dereference (-L)`, ou
|
||||
`--dereference-command-line-symlink-to-dir` soit spécifiée.
|
||||
ls-help-human-readable = Afficher les tailles de fichiers lisibles par l'homme (par ex. 1K 234M 56G).
|
||||
ls-help-kibibytes = par défaut aux blocs de 1024 octets pour l'utilisation du système de fichiers ; utilisé seulement avec -s et par
|
||||
totaux de répertoire
|
||||
ls-help-si = Afficher les tailles de fichiers lisibles par l'homme utilisant des puissances de 1000 au lieu de 1024.
|
||||
ls-help-block-size = dimensionner les tailles par BLOCK_SIZE lors de l'affichage
|
||||
ls-help-print-inode = afficher le numéro d'index de chaque fichier
|
||||
ls-help-reverse-sort = Inverser quelle que soit la méthode de tri, par ex., lister les fichiers en ordre
|
||||
alphabétique inverse, le plus jeune en premier, le plus petit en premier, ou autre.
|
||||
ls-help-recursive = Lister le contenu de tous les répertoires récursivement.
|
||||
ls-help-terminal-width = Supposer que le terminal a COLS colonnes de largeur.
|
||||
ls-help-allocation-size = afficher la taille allouée de chaque fichier, en blocs
|
||||
ls-help-color-output = Colorier la sortie basée sur le type de fichier.
|
||||
ls-help-indicator-style = Ajouter un indicateur avec le style WORD aux noms d'entrée :
|
||||
none (par défaut), slash (-p), file-type (--file-type), classify (-F)
|
||||
ls-help-classify = Ajouter un caractère à chaque nom de fichier indiquant le type de fichier. Aussi, pour
|
||||
les fichiers réguliers qui sont exécutables, ajouter '*'. Les indicateurs de type de fichier sont
|
||||
'/' pour les répertoires, '@' pour les liens symboliques, '|' pour les FIFOs, '=' pour les sockets,
|
||||
'>' pour les portes, et rien pour les fichiers réguliers. when peut être omis, ou un de :
|
||||
none - Ne pas classifier. C'est la valeur par défaut.
|
||||
auto - Classifier seulement si la sortie standard est un terminal.
|
||||
always - Toujours classifier.
|
||||
Spécifier --classify et aucun when est équivalent à --classify=always. Ceci ne
|
||||
suivra pas les liens symboliques listés sur la ligne de commande à moins que les
|
||||
options --dereference-command-line (-H), --dereference (-L), ou
|
||||
--dereference-command-line-symlink-to-dir soient spécifiées.
|
||||
ls-help-file-type = Identique à --classify, mais ne pas ajouter '*'
|
||||
ls-help-slash-directories = Ajouter l'indicateur / aux répertoires.
|
||||
ls-help-time-style = format de date/heure avec -l ; voir TIME_STYLE ci-dessous
|
||||
ls-help-full-time = comme -l --time-style=full-iso
|
||||
ls-help-context = afficher tout contexte de sécurité de chaque fichier
|
||||
ls-help-group-directories-first = grouper les répertoires avant les fichiers ; peut être augmenté avec
|
||||
une option --sort, mais toute utilisation de --sort=none (-U) désactive le groupement
|
||||
ls-invalid-quoting-style = {$program} : Ignorer la valeur invalide de la variable d'environnement QUOTING_STYLE : '{$style}'
|
||||
ls-invalid-columns-width = ignorer la largeur invalide dans la variable d'environnement COLUMNS : {$width}
|
||||
ls-invalid-ignore-pattern = Motif invalide pour ignore : {$pattern}
|
||||
ls-invalid-hide-pattern = Motif invalide pour hide : {$pattern}
|
||||
ls-total = total {$size}
|
|
@ -6,6 +6,8 @@
|
|||
// spell-checker:ignore (ToDO) somegroup nlink tabsize dired subdired dtype colorterm stringly nohash strtime
|
||||
|
||||
use std::iter;
|
||||
#[cfg(unix)]
|
||||
use std::os::unix::fs::{FileTypeExt, MetadataExt};
|
||||
#[cfg(windows)]
|
||||
use std::os::windows::fs::MetadataExt;
|
||||
use std::{cell::LazyCell, cell::OnceCell, num::IntErrorKind};
|
||||
|
@ -18,12 +20,10 @@ use std::{
|
|||
path::{Path, PathBuf},
|
||||
time::{Duration, SystemTime, UNIX_EPOCH},
|
||||
};
|
||||
#[cfg(unix)]
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
os::unix::fs::{FileTypeExt, MetadataExt},
|
||||
collections::{HashMap, HashSet},
|
||||
io::IsTerminal,
|
||||
};
|
||||
use std::{collections::HashSet, io::IsTerminal};
|
||||
|
||||
use ansi_width::ansi_width;
|
||||
use clap::{
|
||||
|
@ -60,7 +60,7 @@ use uucore::libc::{S_IXGRP, S_IXOTH, S_IXUSR};
|
|||
))]
|
||||
use uucore::libc::{dev_t, major, minor};
|
||||
use uucore::line_ending::LineEnding;
|
||||
use uucore::locale::get_message;
|
||||
use uucore::locale::{get_message, get_message_with_args};
|
||||
use uucore::quoting_style::{self, QuotingStyle, escape_name};
|
||||
use uucore::{
|
||||
display::Quotable,
|
||||
|
@ -79,11 +79,6 @@ use dired::{DiredOutput, is_dired_arg_present};
|
|||
mod colors;
|
||||
use colors::{StyleManager, color_name};
|
||||
|
||||
#[cfg(not(feature = "selinux"))]
|
||||
static CONTEXT_HELP_TEXT: &str = "print any security context of each file (not enabled)";
|
||||
#[cfg(feature = "selinux")]
|
||||
static CONTEXT_HELP_TEXT: &str = "print any security context of each file";
|
||||
|
||||
pub mod options {
|
||||
pub mod format {
|
||||
pub static ONE_LINE: &str = "1";
|
||||
|
@ -177,39 +172,39 @@ const DEFAULT_FILE_SIZE_BLOCK_SIZE: u64 = 1;
|
|||
|
||||
#[derive(Error, Debug)]
|
||||
enum LsError {
|
||||
#[error("invalid line width: '{0}'")]
|
||||
#[error("{}", get_message_with_args("ls-error-invalid-line-width", HashMap::from([("width".to_string(), format!("'{}'", _0))])))]
|
||||
InvalidLineWidth(String),
|
||||
|
||||
#[error("general io error: {0}")]
|
||||
#[error("{}", get_message_with_args("ls-error-general-io", HashMap::from([("error".to_string(), _0.to_string())])))]
|
||||
IOError(#[from] std::io::Error),
|
||||
|
||||
#[error("{}", match .1.kind() {
|
||||
ErrorKind::NotFound => format!("cannot access '{}': No such file or directory", .0.to_string_lossy()),
|
||||
ErrorKind::NotFound => get_message_with_args("ls-error-cannot-access-no-such-file", HashMap::from([("path".to_string(), .0.to_string_lossy().to_string())])),
|
||||
ErrorKind::PermissionDenied => match .1.raw_os_error().unwrap_or(1) {
|
||||
1 => format!("cannot access '{}': Operation not permitted", .0.to_string_lossy()),
|
||||
1 => get_message_with_args("ls-error-cannot-access-operation-not-permitted", HashMap::from([("path".to_string(), .0.to_string_lossy().to_string())])),
|
||||
_ => if .0.is_dir() {
|
||||
format!("cannot open directory '{}': Permission denied", .0.to_string_lossy())
|
||||
get_message_with_args("ls-error-cannot-open-directory-permission-denied", HashMap::from([("path".to_string(), .0.to_string_lossy().to_string())]))
|
||||
} else {
|
||||
format!("cannot open file '{}': Permission denied", .0.to_string_lossy())
|
||||
get_message_with_args("ls-error-cannot-open-file-permission-denied", HashMap::from([("path".to_string(), .0.to_string_lossy().to_string())]))
|
||||
},
|
||||
},
|
||||
_ => match .1.raw_os_error().unwrap_or(1) {
|
||||
9 => format!("cannot open directory '{}': Bad file descriptor", .0.to_string_lossy()),
|
||||
_ => format!("unknown io error: '{:?}', '{:?}'", .0.to_string_lossy(), .1),
|
||||
9 => get_message_with_args("ls-error-cannot-open-directory-bad-descriptor", HashMap::from([("path".to_string(), .0.to_string_lossy().to_string())])),
|
||||
_ => get_message_with_args("ls-error-unknown-io-error", HashMap::from([("path".to_string(), .0.to_string_lossy().to_string()), ("error".to_string(), format!("{:?}", .1))])),
|
||||
},
|
||||
})]
|
||||
IOErrorContext(PathBuf, std::io::Error, bool),
|
||||
|
||||
#[error("invalid --block-size argument '{0}'")]
|
||||
#[error("{}", get_message_with_args("ls-error-invalid-block-size", HashMap::from([("size".to_string(), format!("'{}'", _0))])))]
|
||||
BlockSizeParseError(String),
|
||||
|
||||
#[error("--dired and --zero are incompatible")]
|
||||
#[error("{}", get_message("ls-error-dired-and-zero-incompatible"))]
|
||||
DiredAndZeroAreIncompatible,
|
||||
|
||||
#[error("{}: not listing already-listed directory", .0.to_string_lossy())]
|
||||
#[error("{}", get_message_with_args("ls-error-not-listing-already-listed", HashMap::from([("path".to_string(), .0.to_string_lossy().to_string())])))]
|
||||
AlreadyListedError(PathBuf),
|
||||
|
||||
#[error("invalid --time-style argument {}\nPossible values are: {:?}\n\nFor more information try --help", .0.quote(), .1)]
|
||||
#[error("{}", get_message_with_args("ls-error-invalid-time-style", HashMap::from([("style".to_string(), .0.quote().to_string()), ("values".to_string(), format!("{:?}", .1))])))]
|
||||
TimeStyleParseError(String, Vec<String>),
|
||||
}
|
||||
|
||||
|
@ -669,8 +664,17 @@ fn extract_quoting_style(options: &clap::ArgMatches, show_control: bool) -> Quot
|
|||
match match_quoting_style_name(style.as_str(), show_control) {
|
||||
Some(qs) => return qs,
|
||||
None => eprintln!(
|
||||
"{}: Ignoring invalid value of environment variable QUOTING_STYLE: '{style}'",
|
||||
std::env::args().next().unwrap_or_else(|| "ls".to_string()),
|
||||
"{}",
|
||||
get_message_with_args(
|
||||
"ls-invalid-quoting-style",
|
||||
HashMap::from([
|
||||
(
|
||||
"program".to_string(),
|
||||
std::env::args().next().unwrap_or_else(|| "ls".to_string())
|
||||
),
|
||||
("style".to_string(), style.clone())
|
||||
])
|
||||
)
|
||||
),
|
||||
}
|
||||
}
|
||||
|
@ -747,8 +751,11 @@ fn parse_width(width_match: Option<&String>) -> Result<u16, LsError> {
|
|||
Some(columns) => columns,
|
||||
None => {
|
||||
show_error!(
|
||||
"ignoring invalid width in environment variable COLUMNS: {}",
|
||||
columns.quote()
|
||||
"{}",
|
||||
get_message_with_args(
|
||||
"ls-invalid-columns-width",
|
||||
HashMap::from([("width".to_string(), columns.quote().to_string())])
|
||||
)
|
||||
);
|
||||
DEFAULT_TERM_WIDTH
|
||||
}
|
||||
|
@ -966,7 +973,13 @@ impl Config {
|
|||
Ok(p) => {
|
||||
ignore_patterns.push(p);
|
||||
}
|
||||
Err(_) => show_warning!("Invalid pattern for ignore: {}", pattern.quote()),
|
||||
Err(_) => show_warning!(
|
||||
"{}",
|
||||
get_message_with_args(
|
||||
"ls-invalid-ignore-pattern",
|
||||
HashMap::from([("pattern".to_string(), pattern.quote().to_string())])
|
||||
)
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -980,7 +993,13 @@ impl Config {
|
|||
Ok(p) => {
|
||||
ignore_patterns.push(p);
|
||||
}
|
||||
Err(_) => show_warning!("Invalid pattern for hide: {}", pattern.quote()),
|
||||
Err(_) => show_warning!(
|
||||
"{}",
|
||||
get_message_with_args(
|
||||
"ls-invalid-hide-pattern",
|
||||
HashMap::from([("pattern".to_string(), pattern.quote().to_string())])
|
||||
)
|
||||
),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1184,14 +1203,14 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::HELP)
|
||||
.long(options::HELP)
|
||||
.help("Print help information.")
|
||||
.help(get_message("ls-help-print-help"))
|
||||
.action(ArgAction::Help),
|
||||
)
|
||||
// Format arguments
|
||||
.arg(
|
||||
Arg::new(options::FORMAT)
|
||||
.long(options::FORMAT)
|
||||
.help("Set the display format.")
|
||||
.help(get_message("ls-help-set-display-format"))
|
||||
.value_parser(ShortcutValueParser::new([
|
||||
"long",
|
||||
"verbose",
|
||||
|
@ -1216,7 +1235,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::format::COLUMNS)
|
||||
.short('C')
|
||||
.help("Display the files in columns.")
|
||||
.help(get_message("ls-help-display-files-columns"))
|
||||
.overrides_with_all([
|
||||
options::FORMAT,
|
||||
options::format::COLUMNS,
|
||||
|
@ -1230,7 +1249,7 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::format::LONG)
|
||||
.short('l')
|
||||
.long(options::format::LONG)
|
||||
.help("Display detailed information.")
|
||||
.help(get_message("ls-help-display-detailed-info"))
|
||||
.overrides_with_all([
|
||||
options::FORMAT,
|
||||
options::format::COLUMNS,
|
||||
|
@ -1243,7 +1262,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::format::ACROSS)
|
||||
.short('x')
|
||||
.help("List entries in rows instead of in columns.")
|
||||
.help(get_message("ls-help-list-entries-rows"))
|
||||
.overrides_with_all([
|
||||
options::FORMAT,
|
||||
options::format::COLUMNS,
|
||||
|
@ -1259,12 +1278,12 @@ pub fn uu_app() -> Command {
|
|||
.long(options::format::TAB_SIZE)
|
||||
.env("TABSIZE")
|
||||
.value_name("COLS")
|
||||
.help("Assume tab stops at each COLS instead of 8"),
|
||||
.help(get_message("ls-help-assume-tab-stops")),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::format::COMMAS)
|
||||
.short('m')
|
||||
.help("List entries separated by commas.")
|
||||
.help(get_message("ls-help-list-entries-commas"))
|
||||
.overrides_with_all([
|
||||
options::FORMAT,
|
||||
options::format::COLUMNS,
|
||||
|
@ -1278,21 +1297,21 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::ZERO)
|
||||
.long(options::ZERO)
|
||||
.overrides_with(options::ZERO)
|
||||
.help("List entries separated by ASCII NUL characters.")
|
||||
.help(get_message("ls-help-list-entries-nul"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::DIRED)
|
||||
.long(options::DIRED)
|
||||
.short('D')
|
||||
.help("generate output designed for Emacs' dired (Directory Editor) mode")
|
||||
.help(get_message("ls-help-generate-dired-output"))
|
||||
.action(ArgAction::SetTrue)
|
||||
.overrides_with(options::HYPERLINK),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::HYPERLINK)
|
||||
.long(options::HYPERLINK)
|
||||
.help("hyperlink file names WHEN")
|
||||
.help(get_message("ls-help-hyperlink-filenames"))
|
||||
.value_parser(ShortcutValueParser::new([
|
||||
PossibleValue::new("always").alias("yes").alias("force"),
|
||||
PossibleValue::new("auto").alias("tty").alias("if-tty"),
|
||||
|
@ -1314,36 +1333,33 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::format::ONE_LINE)
|
||||
.short('1')
|
||||
.help("List one file per line.")
|
||||
.help(get_message("ls-help-list-one-file-per-line"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::format::LONG_NO_GROUP)
|
||||
.short('o')
|
||||
.help(
|
||||
"Long format without group information. \
|
||||
Identical to --format=long with --no-group.",
|
||||
)
|
||||
.help(get_message("ls-help-long-format-no-group"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::format::LONG_NO_OWNER)
|
||||
.short('g')
|
||||
.help("Long format without owner information.")
|
||||
.help(get_message("ls-help-long-no-owner"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::format::LONG_NUMERIC_UID_GID)
|
||||
.short('n')
|
||||
.long(options::format::LONG_NUMERIC_UID_GID)
|
||||
.help("-l with numeric UIDs and GIDs.")
|
||||
.help(get_message("ls-help-long-numeric-uid-gid"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
// Quoting style
|
||||
.arg(
|
||||
Arg::new(options::QUOTING_STYLE)
|
||||
.long(options::QUOTING_STYLE)
|
||||
.help("Set quoting style.")
|
||||
.help(get_message("ls-help-set-quoting-style"))
|
||||
.value_parser(ShortcutValueParser::new([
|
||||
PossibleValue::new("literal"),
|
||||
PossibleValue::new("shell"),
|
||||
|
@ -1365,7 +1381,7 @@ pub fn uu_app() -> Command {
|
|||
.short('N')
|
||||
.long(options::quoting::LITERAL)
|
||||
.alias("l")
|
||||
.help("Use literal quoting style. Equivalent to `--quoting-style=literal`")
|
||||
.help(get_message("ls-help-literal-quoting-style"))
|
||||
.overrides_with_all([
|
||||
options::QUOTING_STYLE,
|
||||
options::quoting::LITERAL,
|
||||
|
@ -1378,7 +1394,7 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::quoting::ESCAPE)
|
||||
.short('b')
|
||||
.long(options::quoting::ESCAPE)
|
||||
.help("Use escape quoting style. Equivalent to `--quoting-style=escape`")
|
||||
.help(get_message("ls-help-escape-quoting-style"))
|
||||
.overrides_with_all([
|
||||
options::QUOTING_STYLE,
|
||||
options::quoting::LITERAL,
|
||||
|
@ -1391,7 +1407,7 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::quoting::C)
|
||||
.short('Q')
|
||||
.long(options::quoting::C)
|
||||
.help("Use C quoting style. Equivalent to `--quoting-style=c`")
|
||||
.help(get_message("ls-help-c-quoting-style"))
|
||||
.overrides_with_all([
|
||||
options::QUOTING_STYLE,
|
||||
options::quoting::LITERAL,
|
||||
|
@ -1405,14 +1421,14 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::HIDE_CONTROL_CHARS)
|
||||
.short('q')
|
||||
.long(options::HIDE_CONTROL_CHARS)
|
||||
.help("Replace control characters with '?' if they are not escaped.")
|
||||
.help(get_message("ls-help-replace-control-chars"))
|
||||
.overrides_with_all([options::HIDE_CONTROL_CHARS, options::SHOW_CONTROL_CHARS])
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::SHOW_CONTROL_CHARS)
|
||||
.long(options::SHOW_CONTROL_CHARS)
|
||||
.help("Show control characters 'as is' if they are not escaped.")
|
||||
.help(get_message("ls-help-show-control-chars"))
|
||||
.overrides_with_all([options::HIDE_CONTROL_CHARS, options::SHOW_CONTROL_CHARS])
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
|
@ -1420,13 +1436,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::TIME)
|
||||
.long(options::TIME)
|
||||
.help(
|
||||
"Show time in <field>:\n\
|
||||
\taccess time (-u): atime, access, use;\n\
|
||||
\tchange time (-t): ctime, status.\n\
|
||||
\tmodification time: mtime, modification.\n\
|
||||
\tbirth time: birth, creation;",
|
||||
)
|
||||
.help(get_message("ls-help-show-time-field"))
|
||||
.value_name("field")
|
||||
.value_parser(ShortcutValueParser::new([
|
||||
PossibleValue::new("atime").alias("access").alias("use"),
|
||||
|
@ -1441,24 +1451,14 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::time::CHANGE)
|
||||
.short('c')
|
||||
.help(
|
||||
"If the long listing format (e.g., -l, -o) is being used, print the \
|
||||
status change time (the 'ctime' in the inode) instead of the modification \
|
||||
time. When explicitly sorting by time (--sort=time or -t) or when not \
|
||||
using a long listing format, sort according to the status change time.",
|
||||
)
|
||||
.help(get_message("ls-help-time-change"))
|
||||
.overrides_with_all([options::TIME, options::time::ACCESS, options::time::CHANGE])
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::time::ACCESS)
|
||||
.short('u')
|
||||
.help(
|
||||
"If the long listing format (e.g., -l, -o) is being used, print the \
|
||||
status access time instead of the modification time. When explicitly \
|
||||
sorting by time (--sort=time or -t) or when not using a long listing \
|
||||
format, sort according to the access time.",
|
||||
)
|
||||
.help(get_message("ls-help-time-access"))
|
||||
.overrides_with_all([options::TIME, options::time::ACCESS, options::time::CHANGE])
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
|
@ -1468,9 +1468,7 @@ pub fn uu_app() -> Command {
|
|||
.long(options::HIDE)
|
||||
.action(ArgAction::Append)
|
||||
.value_name("PATTERN")
|
||||
.help(
|
||||
"do not list implied entries matching shell PATTERN (overridden by -a or -A)",
|
||||
),
|
||||
.help(get_message("ls-help-hide-pattern")),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::IGNORE)
|
||||
|
@ -1478,22 +1476,30 @@ pub fn uu_app() -> Command {
|
|||
.long(options::IGNORE)
|
||||
.action(ArgAction::Append)
|
||||
.value_name("PATTERN")
|
||||
.help("do not list implied entries matching shell PATTERN"),
|
||||
.help(get_message("ls-help-ignore-pattern")),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::IGNORE_BACKUPS)
|
||||
.short('B')
|
||||
.long(options::IGNORE_BACKUPS)
|
||||
.help("Ignore entries which end with ~.")
|
||||
.help(get_message("ls-help-ignore-backups"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
// Sort arguments
|
||||
.arg(
|
||||
Arg::new(options::SORT)
|
||||
.long(options::SORT)
|
||||
.help("Sort by <field>: name, none (-U), time (-t), size (-S), extension (-X) or width")
|
||||
.help(get_message("ls-help-sort-by-field"))
|
||||
.value_name("field")
|
||||
.value_parser(ShortcutValueParser::new(["name", "none", "time", "size", "version", "extension", "width"]))
|
||||
.value_parser(ShortcutValueParser::new([
|
||||
"name",
|
||||
"none",
|
||||
"time",
|
||||
"size",
|
||||
"version",
|
||||
"extension",
|
||||
"width",
|
||||
]))
|
||||
.require_equals(true)
|
||||
.overrides_with_all([
|
||||
options::SORT,
|
||||
|
@ -1507,7 +1513,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::sort::SIZE)
|
||||
.short('S')
|
||||
.help("Sort by file size, largest first.")
|
||||
.help(get_message("ls-help-sort-by-size"))
|
||||
.overrides_with_all([
|
||||
options::SORT,
|
||||
options::sort::SIZE,
|
||||
|
@ -1521,7 +1527,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::sort::TIME)
|
||||
.short('t')
|
||||
.help("Sort by modification time (the 'mtime' in the inode), newest first.")
|
||||
.help(get_message("ls-help-sort-by-time"))
|
||||
.overrides_with_all([
|
||||
options::SORT,
|
||||
options::sort::SIZE,
|
||||
|
@ -1535,7 +1541,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::sort::VERSION)
|
||||
.short('v')
|
||||
.help("Natural sort of (version) numbers in the filenames.")
|
||||
.help(get_message("ls-help-sort-by-version"))
|
||||
.overrides_with_all([
|
||||
options::SORT,
|
||||
options::sort::SIZE,
|
||||
|
@ -1549,7 +1555,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::sort::EXTENSION)
|
||||
.short('X')
|
||||
.help("Sort alphabetically by entry extension.")
|
||||
.help(get_message("ls-help-sort-by-extension"))
|
||||
.overrides_with_all([
|
||||
options::SORT,
|
||||
options::sort::SIZE,
|
||||
|
@ -1563,11 +1569,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::sort::NONE)
|
||||
.short('U')
|
||||
.help(
|
||||
"Do not sort; list the files in whatever order they are stored in the \
|
||||
directory. This is especially useful when listing very large directories, \
|
||||
since not doing any sorting can be noticeably faster.",
|
||||
)
|
||||
.help(get_message("ls-help-sort-none"))
|
||||
.overrides_with_all([
|
||||
options::SORT,
|
||||
options::sort::SIZE,
|
||||
|
@ -1583,10 +1585,7 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::dereference::ALL)
|
||||
.short('L')
|
||||
.long(options::dereference::ALL)
|
||||
.help(
|
||||
"When showing file information for a symbolic link, show information for the \
|
||||
file the link references rather than the link itself.",
|
||||
)
|
||||
.help(get_message("ls-help-dereference-all"))
|
||||
.overrides_with_all([
|
||||
options::dereference::ALL,
|
||||
options::dereference::DIR_ARGS,
|
||||
|
@ -1597,10 +1596,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::dereference::DIR_ARGS)
|
||||
.long(options::dereference::DIR_ARGS)
|
||||
.help(
|
||||
"Do not follow symlinks except when they link to directories and are \
|
||||
given as command line arguments.",
|
||||
)
|
||||
.help(get_message("ls-help-dereference-dir-args"))
|
||||
.overrides_with_all([
|
||||
options::dereference::ALL,
|
||||
options::dereference::DIR_ARGS,
|
||||
|
@ -1612,7 +1608,7 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::dereference::ARGS)
|
||||
.short('H')
|
||||
.long(options::dereference::ARGS)
|
||||
.help("Do not follow symlinks except when given as command line arguments.")
|
||||
.help(get_message("ls-help-dereference-args"))
|
||||
.overrides_with_all([
|
||||
options::dereference::ALL,
|
||||
options::dereference::DIR_ARGS,
|
||||
|
@ -1625,13 +1621,15 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::NO_GROUP)
|
||||
.long(options::NO_GROUP)
|
||||
.short('G')
|
||||
.help("Do not show group in long format.")
|
||||
.help(get_message("ls-help-no-group"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::AUTHOR)
|
||||
.long(options::AUTHOR)
|
||||
.help(get_message("ls-help-author"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(Arg::new(options::AUTHOR).long(options::AUTHOR).help(
|
||||
"Show author in long format. On the supported platforms, \
|
||||
the author always matches the file owner.",
|
||||
).action(ArgAction::SetTrue))
|
||||
// Other Flags
|
||||
.arg(
|
||||
Arg::new(options::files::ALL)
|
||||
|
@ -1639,7 +1637,7 @@ pub fn uu_app() -> Command {
|
|||
.long(options::files::ALL)
|
||||
// Overrides -A (as the order matters)
|
||||
.overrides_with_all([options::files::ALL, options::files::ALMOST_ALL])
|
||||
.help("Do not ignore hidden files (files with names that start with '.').")
|
||||
.help(get_message("ls-help-all-files"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
|
@ -1648,29 +1646,21 @@ pub fn uu_app() -> Command {
|
|||
.long(options::files::ALMOST_ALL)
|
||||
// Overrides -a (as the order matters)
|
||||
.overrides_with_all([options::files::ALL, options::files::ALMOST_ALL])
|
||||
.help(
|
||||
"In a directory, do not ignore all file names that start with '.', \
|
||||
only ignore '.' and '..'.",
|
||||
)
|
||||
.help(get_message("ls-help-almost-all"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::DIRECTORY)
|
||||
.short('d')
|
||||
.long(options::DIRECTORY)
|
||||
.help(
|
||||
"Only list the names of directories, rather than listing directory contents. \
|
||||
This will not follow symbolic links unless one of `--dereference-command-line \
|
||||
(-H)`, `--dereference (-L)`, or `--dereference-command-line-symlink-to-dir` is \
|
||||
specified.",
|
||||
)
|
||||
.help(get_message("ls-help-directory"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::size::HUMAN_READABLE)
|
||||
.short('h')
|
||||
.long(options::size::HUMAN_READABLE)
|
||||
.help("Print human readable file sizes (e.g. 1K 234M 56G).")
|
||||
.help(get_message("ls-help-human-readable"))
|
||||
.overrides_with_all([options::size::BLOCK_SIZE, options::size::SI])
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
|
@ -1678,16 +1668,13 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::size::KIBIBYTES)
|
||||
.short('k')
|
||||
.long(options::size::KIBIBYTES)
|
||||
.help(
|
||||
"default to 1024-byte blocks for file system usage; used only with -s and per \
|
||||
directory totals",
|
||||
)
|
||||
.help(get_message("ls-help-kibibytes"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::size::SI)
|
||||
.long(options::size::SI)
|
||||
.help("Print human readable file sizes using powers of 1000 instead of 1024.")
|
||||
.help(get_message("ls-help-si"))
|
||||
.overrides_with_all([options::size::BLOCK_SIZE, options::size::HUMAN_READABLE])
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
|
@ -1696,51 +1683,48 @@ pub fn uu_app() -> Command {
|
|||
.long(options::size::BLOCK_SIZE)
|
||||
.require_equals(true)
|
||||
.value_name("BLOCK_SIZE")
|
||||
.help("scale sizes by BLOCK_SIZE when printing them")
|
||||
.help(get_message("ls-help-block-size"))
|
||||
.overrides_with_all([options::size::SI, options::size::HUMAN_READABLE]),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::INODE)
|
||||
.short('i')
|
||||
.long(options::INODE)
|
||||
.help("print the index number of each file")
|
||||
.help(get_message("ls-help-print-inode"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::REVERSE)
|
||||
.short('r')
|
||||
.long(options::REVERSE)
|
||||
.help(
|
||||
"Reverse whatever the sorting method is e.g., list files in reverse \
|
||||
alphabetical order, youngest first, smallest first, or whatever.",
|
||||
)
|
||||
.help(get_message("ls-help-reverse-sort"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::RECURSIVE)
|
||||
.short('R')
|
||||
.long(options::RECURSIVE)
|
||||
.help("List the contents of all directories recursively.")
|
||||
.help(get_message("ls-help-recursive"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::WIDTH)
|
||||
.long(options::WIDTH)
|
||||
.short('w')
|
||||
.help("Assume that the terminal is COLS columns wide.")
|
||||
.help(get_message("ls-help-terminal-width"))
|
||||
.value_name("COLS"),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::size::ALLOCATION_SIZE)
|
||||
.short('s')
|
||||
.long(options::size::ALLOCATION_SIZE)
|
||||
.help("print the allocated size of each file, in blocks")
|
||||
.help(get_message("ls-help-allocation-size"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::COLOR)
|
||||
.long(options::COLOR)
|
||||
.help("Color output based on file type.")
|
||||
.help(get_message("ls-help-color-output"))
|
||||
.value_parser(ShortcutValueParser::new([
|
||||
PossibleValue::new("always").alias("yes").alias("force"),
|
||||
PossibleValue::new("auto").alias("tty").alias("if-tty"),
|
||||
|
@ -1752,11 +1736,13 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::INDICATOR_STYLE)
|
||||
.long(options::INDICATOR_STYLE)
|
||||
.help(
|
||||
"Append indicator with style WORD to entry names: \
|
||||
none (default), slash (-p), file-type (--file-type), classify (-F)",
|
||||
)
|
||||
.value_parser(ShortcutValueParser::new(["none", "slash", "file-type", "classify"]))
|
||||
.help(get_message("ls-help-indicator-style"))
|
||||
.value_parser(ShortcutValueParser::new([
|
||||
"none",
|
||||
"slash",
|
||||
"file-type",
|
||||
"classify",
|
||||
]))
|
||||
.overrides_with_all([
|
||||
options::indicator_style::FILE_TYPE,
|
||||
options::indicator_style::SLASH,
|
||||
|
@ -1773,19 +1759,7 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::indicator_style::CLASSIFY)
|
||||
.short('F')
|
||||
.long(options::indicator_style::CLASSIFY)
|
||||
.help(
|
||||
"Append a character to each file name indicating the file type. Also, for \
|
||||
regular files that are executable, append '*'. The file type indicators are \
|
||||
'/' for directories, '@' for symbolic links, '|' for FIFOs, '=' for sockets, \
|
||||
'>' for doors, and nothing for regular files. when may be omitted, or one of:\n\
|
||||
\tnone - Do not classify. This is the default.\n\
|
||||
\tauto - Only classify if standard output is a terminal.\n\
|
||||
\talways - Always classify.\n\
|
||||
Specifying --classify and no when is equivalent to --classify=always. This will \
|
||||
not follow symbolic links listed on the command line unless the \
|
||||
--dereference-command-line (-H), --dereference (-L), or \
|
||||
--dereference-command-line-symlink-to-dir options are specified.",
|
||||
)
|
||||
.help(get_message("ls-help-classify"))
|
||||
.value_name("when")
|
||||
.value_parser(ShortcutValueParser::new([
|
||||
PossibleValue::new("always").alias("yes").alias("force"),
|
||||
|
@ -1805,7 +1779,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::indicator_style::FILE_TYPE)
|
||||
.long(options::indicator_style::FILE_TYPE)
|
||||
.help("Same as --classify, but do not append '*'")
|
||||
.help(get_message("ls-help-file-type"))
|
||||
.overrides_with_all([
|
||||
options::indicator_style::FILE_TYPE,
|
||||
options::indicator_style::SLASH,
|
||||
|
@ -1817,7 +1791,7 @@ pub fn uu_app() -> Command {
|
|||
.arg(
|
||||
Arg::new(options::indicator_style::SLASH)
|
||||
.short('p')
|
||||
.help("Append / indicator to directories.")
|
||||
.help(get_message("ls-help-slash-directories"))
|
||||
.overrides_with_all([
|
||||
options::indicator_style::FILE_TYPE,
|
||||
options::indicator_style::SLASH,
|
||||
|
@ -1830,7 +1804,7 @@ pub fn uu_app() -> Command {
|
|||
//This still needs support for posix-*
|
||||
Arg::new(options::TIME_STYLE)
|
||||
.long(options::TIME_STYLE)
|
||||
.help("time/date format with -l; see TIME_STYLE below")
|
||||
.help(get_message("ls-help-time-style"))
|
||||
.value_name("TIME_STYLE")
|
||||
.env("TIME_STYLE")
|
||||
.value_parser(NonEmptyStringValueParser::new())
|
||||
|
@ -1840,23 +1814,20 @@ pub fn uu_app() -> Command {
|
|||
Arg::new(options::FULL_TIME)
|
||||
.long(options::FULL_TIME)
|
||||
.overrides_with(options::FULL_TIME)
|
||||
.help("like -l --time-style=full-iso")
|
||||
.help(get_message("ls-help-full-time"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::CONTEXT)
|
||||
.short('Z')
|
||||
.long(options::CONTEXT)
|
||||
.help(CONTEXT_HELP_TEXT)
|
||||
.help(get_message("ls-help-context"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
.arg(
|
||||
Arg::new(options::GROUP_DIRECTORIES_FIRST)
|
||||
.long(options::GROUP_DIRECTORIES_FIRST)
|
||||
.help(
|
||||
"group directories before files; can be augmented with \
|
||||
a --sort option, but any use of --sort=none (-U) disables grouping",
|
||||
)
|
||||
.help(get_message("ls-help-group-directories-first"))
|
||||
.action(ArgAction::SetTrue),
|
||||
)
|
||||
// Positional arguments
|
||||
|
@ -2482,8 +2453,11 @@ fn return_total(
|
|||
dired::indent(out)?;
|
||||
}
|
||||
Ok(format!(
|
||||
"total {}{}",
|
||||
display_size(total_size, config),
|
||||
"{}{}",
|
||||
get_message_with_args(
|
||||
"ls-total",
|
||||
HashMap::from([("size".to_string(), display_size(total_size, config))])
|
||||
),
|
||||
config.line_ending
|
||||
))
|
||||
}
|
||||
|
|
|
@ -106,6 +106,7 @@ fn test_invalid_value_time_style() {
|
|||
.arg("-g")
|
||||
.arg("--time-style=definitely_invalid_value")
|
||||
.fails_with_code(2)
|
||||
.stderr_contains("time-style argument 'definitely_invalid_value'")
|
||||
.no_stdout();
|
||||
// If it only looks temporarily like it might be used, no error:
|
||||
new_ucmd!()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue