Merge pull request #595 from ayushpoddar/color-hidden-files

Colorise hidden files and directories
This commit is contained in:
Claudio Bley 2024-07-12 14:19:26 +02:00 committed by GitHub
commit 597a8c6807
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 43 additions and 17 deletions

View file

@ -407,6 +407,7 @@ module ColorLS
when file.blockdev? then :blockdev
when file.socket? then :socket
when file.executable? then :executable_file
when file.hidden? then :hidden
when @files.key?(key) then :recognized_file
else :unrecognized_file
end
@ -415,20 +416,32 @@ module ColorLS
def options(content)
if content.directory?
key = content.name.downcase.to_sym
key = @folder_aliases[key] unless @folders.key? key
key = :folder if key.nil?
color = @colors[:dir]
group = :folders
options_directory(content).values_at(:key, :color, :group)
else
key = File.extname(content.name).delete_prefix('.').downcase.to_sym
key = @file_aliases[key] unless @files.key? key
color = file_color(content, key)
group = @files.key?(key) ? :recognized_files : :unrecognized_files
key = :file if key.nil?
options_file(content).values_at(:key, :color, :group)
end
end
[key, color, group]
def options_directory(content)
key = content.name.downcase.to_sym
key = @folder_aliases[key] unless @folders.key?(key)
key = :folder if key.nil?
color = content.hidden? ? @colors[:hidden_dir] : @colors[:dir]
{key: key, color: color, group: :folders}
end
def options_file(content)
key = File.extname(content.name).delete_prefix('.').downcase.to_sym
key = @file_aliases[key] unless @files.key?(key)
color = file_color(content, key)
group = @files.key?(key) ? :recognized_files : :unrecognized_files
key = :file if key.nil?
{key: key, color: color, group: group}
end
def tree_contents(path)

View file

@ -40,6 +40,10 @@ module ColorLS
@dead
end
def hidden?
@name.start_with?('.')
end
def owner
return @@users[@stats.uid] if @@users.key? @stats.uid

View file

@ -9,9 +9,11 @@ dead_link: red
link: cyan
# special files
socket: green
blockdev: green
chardev: green
socket: green
blockdev: green
chardev: green
hidden: burlywood
hidden_dir: slategray
# Access Modes
write: darkkhaki

View file

@ -9,9 +9,11 @@ dead_link: red
link: cyan
# special files
socket: darkgray
blockdev: darkgray
chardev: darkgray
socket: darkgray
blockdev: darkgray
chardev: darkgray
hidden: seagreen
hidden_dir: royalblue
# Access Modes
write: red

View file

@ -25,6 +25,7 @@ RSpec.describe ColorLS::Core do
chardev?: false,
socket?: false,
symlink?: false,
hidden?: false,
stats: instance_double(File::Stat,
mode: 0o444, # read for user, owner, other
setuid?: false,
@ -47,6 +48,7 @@ RSpec.describe ColorLS::Core do
chardev?: false,
socket?: false,
symlink?: false,
hidden?: false,
stats: instance_double(File::Stat,
mode: 0o444, # read for user, owner, other
setuid?: false,
@ -77,6 +79,7 @@ RSpec.describe ColorLS::Core do
chardev?: false,
socket?: false,
symlink?: false,
hidden?: true,
executable?: false
)

View file

@ -26,6 +26,7 @@ RSpec.describe ColorLS::Flags do
chardev?: false,
socket?: false,
symlink?: false,
hidden?: false,
stats: instance_double(File::Stat,
mode: 0o444, # read for user, owner, other
setuid?: true,
@ -467,6 +468,7 @@ RSpec.describe ColorLS::Flags do
chardev?: false,
socket?: false,
symlink?: true,
hidden?: false,
link_target: "#{FIXTURES}/z.txt",
dead?: false,
executable?: false