mirror of
https://github.com/athityakumar/colorls.git
synced 2024-09-19 05:31:23 +02:00
Merge pull request #229 from avdv/socket-chardev-blockdev
Add support for special files
This commit is contained in:
commit
7a9ea25808
5 changed files with 40 additions and 41 deletions
|
@ -139,14 +139,6 @@ module ColorLS
|
||||||
@file_aliases = ColorLS::Yaml.new('file_aliases.yaml').load(aliase: true)
|
@file_aliases = ColorLS::Yaml.new('file_aliases.yaml').load(aliase: true)
|
||||||
@folders = ColorLS::Yaml.new('folders.yaml').load
|
@folders = ColorLS::Yaml.new('folders.yaml').load
|
||||||
@folder_aliases = ColorLS::Yaml.new('folder_aliases.yaml').load(aliase: true)
|
@folder_aliases = ColorLS::Yaml.new('folder_aliases.yaml').load(aliase: true)
|
||||||
|
|
||||||
@file_keys = @files.keys
|
|
||||||
@file_aliase_keys = @file_aliases.keys
|
|
||||||
@folder_keys = @folders.keys
|
|
||||||
@folder_aliase_keys = @folder_aliases.keys
|
|
||||||
|
|
||||||
@all_files = @file_keys + @file_aliase_keys
|
|
||||||
@all_folders = @folder_keys + @folder_aliase_keys
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def chunkify
|
def chunkify
|
||||||
|
@ -318,23 +310,33 @@ module ColorLS
|
||||||
print "\n"
|
print "\n"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def file_color(file, key)
|
||||||
|
color_key = case
|
||||||
|
when file.chardev? then :chardev
|
||||||
|
when file.blockdev? then :blockdev
|
||||||
|
when file.socket? then :socket
|
||||||
|
else
|
||||||
|
@files.key?(key) ? :recognized_file : :unrecognized_file
|
||||||
|
end
|
||||||
|
@colors[color_key]
|
||||||
|
end
|
||||||
|
|
||||||
def options(content)
|
def options(content)
|
||||||
if content.directory?
|
if content.directory?
|
||||||
key = content.name.to_sym
|
key = content.name.to_sym
|
||||||
|
key = @folder_aliases[key] unless @folders.key? key
|
||||||
|
key = :folder if key.nil?
|
||||||
color = @colors[:dir]
|
color = @colors[:dir]
|
||||||
return [:folder, color, :folders] unless @all_folders.include?(key)
|
group = :folders
|
||||||
key = @folder_aliases[key] unless @folder_keys.include?(key)
|
else
|
||||||
return [key, color, :folders]
|
key = content.name.split('.').last.downcase.to_sym
|
||||||
|
key = @file_aliases[key] unless @files.key? key
|
||||||
|
key = :file if key.nil?
|
||||||
|
color = file_color(content, key)
|
||||||
|
group = @files.key?(key) ? :recognized_files : :unrecognized_files
|
||||||
end
|
end
|
||||||
|
|
||||||
color = @colors[:recognized_file]
|
[key, color, group]
|
||||||
return [content.downcase.to_sym, color, :recognized_files] if @file_keys.include?(key)
|
|
||||||
|
|
||||||
key = content.name.split('.').last.downcase.to_sym
|
|
||||||
return [:file, @colors[:unrecognized_file], :unrecognized_files] unless @all_files.include?(key)
|
|
||||||
|
|
||||||
key = @file_aliases[key] unless @file_keys.include?(key)
|
|
||||||
[key, color, :recognized_files]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def tree_traverse(path, prespace, indent)
|
def tree_traverse(path, prespace, indent)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
module ColorLS
|
module ColorLS
|
||||||
class FileInfo
|
class FileInfo
|
||||||
|
extend Forwardable
|
||||||
|
|
||||||
@@users = {} # rubocop:disable Style/ClassVars
|
@@users = {} # rubocop:disable Style/ClassVars
|
||||||
@@groups = {} # rubocop:disable Style/ClassVars
|
@@groups = {} # rubocop:disable Style/ClassVars
|
||||||
|
|
||||||
|
@ -31,10 +33,6 @@ module ColorLS
|
||||||
@stats.uid.to_s
|
@stats.uid.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
def owned?
|
|
||||||
@stats.owned?
|
|
||||||
end
|
|
||||||
|
|
||||||
def group
|
def group
|
||||||
return @@groups[@stats.gid] if @@groups.key? @stats.gid
|
return @@groups[@stats.gid] if @@groups.key? @stats.gid
|
||||||
group = Etc.getgrgid(@stats.gid)
|
group = Etc.getgrgid(@stats.gid)
|
||||||
|
@ -43,22 +41,6 @@ module ColorLS
|
||||||
@stats.gid.to_s
|
@stats.gid.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
def mtime
|
|
||||||
@stats.mtime
|
|
||||||
end
|
|
||||||
|
|
||||||
def size
|
|
||||||
@stats.size
|
|
||||||
end
|
|
||||||
|
|
||||||
def directory?
|
|
||||||
@stats.directory?
|
|
||||||
end
|
|
||||||
|
|
||||||
def symlink?
|
|
||||||
@stats.symlink?
|
|
||||||
end
|
|
||||||
|
|
||||||
# target of a symlink (only available for symlinks)
|
# target of a symlink (only available for symlinks)
|
||||||
def link_target
|
def link_target
|
||||||
@target
|
@target
|
||||||
|
@ -67,5 +49,7 @@ module ColorLS
|
||||||
def to_s
|
def to_s
|
||||||
name
|
name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def_delegators :@stats, :directory?, :socket?, :chardev?, :symlink?, :blockdev?, :mtime, :size, :owned?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,6 +7,11 @@ dir: dodgerblue
|
||||||
dead_link: red
|
dead_link: red
|
||||||
link: cyan
|
link: cyan
|
||||||
|
|
||||||
|
# special files
|
||||||
|
socket: green
|
||||||
|
blockdev: green
|
||||||
|
chardev: green
|
||||||
|
|
||||||
# Access Modes
|
# Access Modes
|
||||||
write: darkkhaki
|
write: darkkhaki
|
||||||
read: limegreen
|
read: limegreen
|
||||||
|
|
|
@ -7,6 +7,11 @@ dir: navyblue
|
||||||
dead_link: red
|
dead_link: red
|
||||||
link: cyan
|
link: cyan
|
||||||
|
|
||||||
|
# special files
|
||||||
|
socket: darkgray
|
||||||
|
blockdev: darkgray
|
||||||
|
chardev: darkgray
|
||||||
|
|
||||||
# Access Modes
|
# Access Modes
|
||||||
write: red
|
write: red
|
||||||
read: sienna
|
read: sienna
|
||||||
|
|
|
@ -65,6 +65,9 @@ RSpec.describe ColorLS::Flags do
|
||||||
:owner => "user",
|
:owner => "user",
|
||||||
:name => "a.txt",
|
:name => "a.txt",
|
||||||
:size => 128,
|
:size => 128,
|
||||||
|
:blockdev? => false,
|
||||||
|
:chardev? => false,
|
||||||
|
:socket? => false,
|
||||||
:symlink? => false,
|
:symlink? => false,
|
||||||
:stats => OpenStruct.new(
|
:stats => OpenStruct.new(
|
||||||
mode: 0o444, # read for user, owner, other
|
mode: 0o444, # read for user, owner, other
|
||||||
|
|
Loading…
Reference in a new issue