refactor: Rename FileType::Immediate to more obvious FileType::Build

This commit is contained in:
Robert Minsk 2023-09-11 08:37:18 -07:00
parent 5ab83febde
commit 1c29142831
6 changed files with 64 additions and 66 deletions

View file

@ -25,9 +25,7 @@ files; setting `EXA_COLORS="reset"` will highlight nothing.
- eza now supports bright colours! As supported by most modern 256\-colour terminals, you can now choose from `bright` colour codes when selecting your custom colours in your `#EXA_COLORS` environment variable.
"Immediate" files are the files you should look at when downloading and building a project for the first time: READMEs, Makefiles, Cargo.toml, and others.
They are highlighted in _yellow_ and _underlined_.
- Build (Makefile, Cargo.toml, package.json) are yellow and underlined.
- Images (png, jpeg, gif) are purple.
- Videos (mp4, ogv, m2ts) are a slightly purpler purple.
- Music (mp3, m4a, ogg) is a deeper purple.

View file

@ -224,34 +224,34 @@ LIST OF CODES
: a mount point
`im`
: image files
: a regular file that is an image
`vi`
: video files
: a regular file that is a video
`mu`
: music files
: a regular file that is lossy music
`lo`
: lossless music files
: a regular file that is lossless music
`cr`
: cryptographic files
: a regular file that is related to cryptography (ex: key or certificate)
`do`
: document files
: a regular file that is a document (ex: office suite document or PDF)
`co`
: compressed files
: a regular file this is compressed
`tm`
: temporary files
: a regular file that is temporary (ex: a text editor's backup file)
`cm`
: compiled files
: a regular file that is a compilation artifact (ex: Java class file)
`ie`
: immediate files
`bu`
: a regular file that is used to build a project (ex: Makefile)
Values in `EXA_COLORS` override those given in `LS_COLORS`, so you dont need to re-write an existing `LS_COLORS` variable with proprietary extensions.

View file

@ -22,7 +22,7 @@ pub enum FileType {
Compressed,
Temp,
Compiled,
Immediate // An “immediate” file is something that can be run or activated somehow in order to
Build // A “build file is something that can be run or activated somehow in order to
// kick off the build of a project. Its usually only present in directories full of
// source code.
}
@ -30,47 +30,47 @@ pub enum FileType {
/// Mapping from full filenames to file type.
const FILENAME_TYPES: Map<&'static str, FileType> = phf_map! {
/* Immediate file - kick off the build of a project */
"Brewfile" => FileType::Immediate,
"bsconfig.json" => FileType::Immediate,
"BUILD" => FileType::Immediate,
"BUILD.bazel" => FileType::Immediate,
"build.gradle" => FileType::Immediate,
"build.sbt" => FileType::Immediate,
"build.xml" => FileType::Immediate,
"Cargo.toml" => FileType::Immediate,
"CMakeLists.txt" => FileType::Immediate,
"composer.json" => FileType::Immediate,
"configure" => FileType::Immediate,
"Containerfile" => FileType::Immediate,
"Dockerfile" => FileType::Immediate,
"Earthfile" => FileType::Immediate,
"flake.nix" => FileType::Immediate,
"Gemfile" => FileType::Immediate,
"GNUmakefile" => FileType::Immediate,
"Gruntfile.coffee" => FileType::Immediate,
"Gruntfile.js" => FileType::Immediate,
"jsconfig.json" => FileType::Immediate,
"Justfile" => FileType::Immediate,
"justfile" => FileType::Immediate,
"Makefile" => FileType::Immediate,
"makefile" => FileType::Immediate,
"meson.build" => FileType::Immediate,
"mix.exs" => FileType::Immediate,
"package.json" => FileType::Immediate,
"Pipfile" => FileType::Immediate,
"PKGBUILD" => FileType::Immediate,
"Podfile" => FileType::Immediate,
"pom.xml" => FileType::Immediate,
"Procfile" => FileType::Immediate,
"pyproject.toml" => FileType::Immediate,
"Rakefile" => FileType::Immediate,
"RoboFile.php" => FileType::Immediate,
"SConstruct" => FileType::Immediate,
"tsconfig.json" => FileType::Immediate,
"Vagrantfile" => FileType::Immediate,
"webpack.config.cjs" => FileType::Immediate,
"webpack.config.js" => FileType::Immediate,
"WORKSPACE" => FileType::Immediate,
"Brewfile" => FileType::Build,
"bsconfig.json" => FileType::Build,
"BUILD" => FileType::Build,
"BUILD.bazel" => FileType::Build,
"build.gradle" => FileType::Build,
"build.sbt" => FileType::Build,
"build.xml" => FileType::Build,
"Cargo.toml" => FileType::Build,
"CMakeLists.txt" => FileType::Build,
"composer.json" => FileType::Build,
"configure" => FileType::Build,
"Containerfile" => FileType::Build,
"Dockerfile" => FileType::Build,
"Earthfile" => FileType::Build,
"flake.nix" => FileType::Build,
"Gemfile" => FileType::Build,
"GNUmakefile" => FileType::Build,
"Gruntfile.coffee" => FileType::Build,
"Gruntfile.js" => FileType::Build,
"jsconfig.json" => FileType::Build,
"Justfile" => FileType::Build,
"justfile" => FileType::Build,
"Makefile" => FileType::Build,
"makefile" => FileType::Build,
"meson.build" => FileType::Build,
"mix.exs" => FileType::Build,
"package.json" => FileType::Build,
"Pipfile" => FileType::Build,
"PKGBUILD" => FileType::Build,
"Podfile" => FileType::Build,
"pom.xml" => FileType::Build,
"Procfile" => FileType::Build,
"pyproject.toml" => FileType::Build,
"Rakefile" => FileType::Build,
"RoboFile.php" => FileType::Build,
"SConstruct" => FileType::Build,
"tsconfig.json" => FileType::Build,
"Vagrantfile" => FileType::Build,
"webpack.config.cjs" => FileType::Build,
"webpack.config.js" => FileType::Build,
"WORKSPACE" => FileType::Build,
/* Cryptology files */
"id_dsa" => FileType::Crypto,
"id_ecdsa" => FileType::Crypto,
@ -84,7 +84,7 @@ const FILENAME_TYPES: Map<&'static str, FileType> = phf_map! {
/// extension is added also update the extension icon map.
const EXTENSION_TYPES: Map<&'static str, FileType> = phf_map! {
/* Immediate file - kick off the build of a project */
"ninja" => FileType::Immediate,
"ninja" => FileType::Build,
/* Image files */
"arw" => FileType::Image,
"avif" => FileType::Image,
@ -270,7 +270,7 @@ impl FileType {
pub(crate) fn get_file_type(file: &File<'_>) -> Option<FileType> {
// Case-insensitive readme is checked first for backwards compatibility.
if file.name.to_lowercase().starts_with("readme") {
return Some(Self::Immediate)
return Some(Self::Build)
}
if let Some(file_type) = FILENAME_TYPES.get(&file.name) {
return Some(file_type.clone())

View file

@ -88,7 +88,7 @@ impl UiStyles {
compressed: Red.normal(),
temp: White.normal(),
compiled: Yellow.normal(),
immediate: Yellow.bold().underline()
build: Yellow.bold().underline()
},
punctuation: DarkGray.bold(),

View file

@ -143,7 +143,7 @@ impl Definitions {
}
pub trait FileColours: std::marker::Sync {
pub trait FileColours: Sync {
fn colour_file(&self, file: &File<'_>, theme: &Theme) -> Option<Style>;
}
@ -211,7 +211,7 @@ impl FileColours for FileTypes {
Some(FileType::Compressed) => Some(theme.ui.file_type.compressed),
Some(FileType::Temp) => Some(theme.ui.file_type.temp),
Some(FileType::Compiled) => Some(theme.ui.file_type.compiled),
Some(FileType::Immediate) => Some(theme.ui.file_type.immediate),
Some(FileType::Build) => Some(theme.ui.file_type.build),
None => None
}
}
@ -337,12 +337,12 @@ impl render::UserColours for Theme {
}
impl FileNameColours for Theme {
fn symlink_path(&self) -> Style { self.ui.symlink_path }
fn normal_arrow(&self) -> Style { self.ui.punctuation }
fn broken_symlink(&self) -> Style { self.ui.broken_symlink }
fn broken_filename(&self) -> Style { apply_overlay(self.ui.broken_symlink, self.ui.broken_path_overlay) }
fn broken_control_char(&self) -> Style { apply_overlay(self.ui.control_char, self.ui.broken_path_overlay) }
fn control_char(&self) -> Style { self.ui.control_char }
fn symlink_path(&self) -> Style { self.ui.symlink_path }
fn broken_control_char(&self) -> Style { apply_overlay(self.ui.control_char, self.ui.broken_path_overlay) }
fn executable_file(&self) -> Style { self.ui.filekinds.executable }
fn mount_point(&self) -> Style { self.ui.filekinds.mount_point }
@ -563,7 +563,7 @@ mod customs_test {
test!(exa_co: ls "", exa "co=38;5;134" => colours c -> { c.file_type.compressed = Fixed(134).normal(); });
test!(exa_tm: ls "", exa "tm=38;5;135" => colours c -> { c.file_type.temp = Fixed(135).normal(); });
test!(exa_cm: ls "", exa "cm=38;5;136" => colours c -> { c.file_type.compiled = Fixed(136).normal(); });
test!(exa_ie: ls "", exa "ie=38;5;137" => colours c -> { c.file_type.immediate = Fixed(137).normal(); });
test!(exa_ie: ls "", exa "bu=38;5;137" => colours c -> { c.file_type.build = Fixed(137).normal(); });
// All the while, LS_COLORS treats them as filenames:
test!(ls_uu: ls "uu=38;5;117", exa "" => exts [ ("uu", Fixed(117).normal()) ]);

View file

@ -133,7 +133,7 @@ pub struct FileType {
pub compressed: Style,
pub temp: Style,
pub compiled: Style,
pub immediate: Style,
pub build: Style,
}
impl UiStyles {
@ -237,7 +237,7 @@ impl UiStyles {
"co" => self.file_type.compressed = pair.to_style(),
"tm" => self.file_type.temp = pair.to_style(),
"cm" => self.file_type.compiled = pair.to_style(),
"ie" => self.file_type.immediate = pair.to_style(),
"bu" => self.file_type.build = pair.to_style(),
_ => return false,
}