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)
|
||||
@folders = ColorLS::Yaml.new('folders.yaml').load
|
||||
@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
|
||||
|
||||
def chunkify
|
||||
|
@ -318,23 +310,33 @@ module ColorLS
|
|||
print "\n"
|
||||
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)
|
||||
if content.directory?
|
||||
key = content.name.to_sym
|
||||
key = @folder_aliases[key] unless @folders.key? key
|
||||
key = :folder if key.nil?
|
||||
color = @colors[:dir]
|
||||
return [:folder, color, :folders] unless @all_folders.include?(key)
|
||||
key = @folder_aliases[key] unless @folder_keys.include?(key)
|
||||
return [key, color, :folders]
|
||||
group = :folders
|
||||
else
|
||||
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
|
||||
|
||||
color = @colors[:recognized_file]
|
||||
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]
|
||||
[key, color, group]
|
||||
end
|
||||
|
||||
def tree_traverse(path, prespace, indent)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
module ColorLS
|
||||
class FileInfo
|
||||
extend Forwardable
|
||||
|
||||
@@users = {} # rubocop:disable Style/ClassVars
|
||||
@@groups = {} # rubocop:disable Style/ClassVars
|
||||
|
||||
|
@ -31,10 +33,6 @@ module ColorLS
|
|||
@stats.uid.to_s
|
||||
end
|
||||
|
||||
def owned?
|
||||
@stats.owned?
|
||||
end
|
||||
|
||||
def group
|
||||
return @@groups[@stats.gid] if @@groups.key? @stats.gid
|
||||
group = Etc.getgrgid(@stats.gid)
|
||||
|
@ -43,22 +41,6 @@ module ColorLS
|
|||
@stats.gid.to_s
|
||||
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)
|
||||
def link_target
|
||||
@target
|
||||
|
@ -67,5 +49,7 @@ module ColorLS
|
|||
def to_s
|
||||
name
|
||||
end
|
||||
|
||||
def_delegators :@stats, :directory?, :socket?, :chardev?, :symlink?, :blockdev?, :mtime, :size, :owned?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -7,6 +7,11 @@ dir: dodgerblue
|
|||
dead_link: red
|
||||
link: cyan
|
||||
|
||||
# special files
|
||||
socket: green
|
||||
blockdev: green
|
||||
chardev: green
|
||||
|
||||
# Access Modes
|
||||
write: darkkhaki
|
||||
read: limegreen
|
||||
|
@ -36,4 +41,4 @@ addition: chartreuse
|
|||
modification: darkkhaki
|
||||
deletion: darkred
|
||||
untracked: darkorange
|
||||
unchanged: forestgreen
|
||||
unchanged: forestgreen
|
||||
|
|
|
@ -7,6 +7,11 @@ dir: navyblue
|
|||
dead_link: red
|
||||
link: cyan
|
||||
|
||||
# special files
|
||||
socket: darkgray
|
||||
blockdev: darkgray
|
||||
chardev: darkgray
|
||||
|
||||
# Access Modes
|
||||
write: red
|
||||
read: sienna
|
||||
|
@ -36,4 +41,4 @@ addition: chartreuse
|
|||
modification: darkkhaki
|
||||
deletion: darkred
|
||||
untracked: darkorange
|
||||
unchanged: darkgreen
|
||||
unchanged: darkgreen
|
||||
|
|
|
@ -65,6 +65,9 @@ RSpec.describe ColorLS::Flags do
|
|||
:owner => "user",
|
||||
:name => "a.txt",
|
||||
:size => 128,
|
||||
:blockdev? => false,
|
||||
:chardev? => false,
|
||||
:socket? => false,
|
||||
:symlink? => false,
|
||||
:stats => OpenStruct.new(
|
||||
mode: 0o444, # read for user, owner, other
|
||||
|
|
Loading…
Reference in a new issue