mirror of
https://github.com/athityakumar/colorls.git
synced 2024-09-19 05:31:23 +02:00
Inits repository
This commit is contained in:
commit
ad726bc083
5 changed files with 152 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
Gemfile.lock
|
4
Gemfile
Normal file
4
Gemfile
Normal file
|
@ -0,0 +1,4 @@
|
|||
source 'https://rubygems.org'
|
||||
|
||||
gem 'colorize'
|
||||
gem 'facets'
|
54
aliases.yaml
Normal file
54
aliases.yaml
Normal file
|
@ -0,0 +1,54 @@
|
|||
apk: android
|
||||
ds_store: apple
|
||||
localized: apple
|
||||
mp3: audio
|
||||
scss: css
|
||||
docx: doc
|
||||
gdoc: doc
|
||||
mobi: ebook
|
||||
eot: font
|
||||
otf: font
|
||||
ttf: font
|
||||
woff: font
|
||||
editorconfig: git
|
||||
gitconfig: git
|
||||
gitignore: git
|
||||
gitignore_global: git
|
||||
jpeg: image
|
||||
jpg: image
|
||||
png: image
|
||||
svg: image
|
||||
markdown: md
|
||||
mkd: md
|
||||
rdoc: md
|
||||
readme: md
|
||||
license: md
|
||||
pptx: ppt
|
||||
gslides: ppt
|
||||
pyc: py
|
||||
rdata: r
|
||||
rds: r
|
||||
gemfile: rb
|
||||
gemspec: rb
|
||||
guardfile: rb
|
||||
lock: rb
|
||||
procfile: rb
|
||||
rakefile: rb
|
||||
rspec: rb
|
||||
rspec_status: rb
|
||||
rspec_parallel: rb
|
||||
ru: rb
|
||||
bash: sh
|
||||
bashrc: sh
|
||||
bash_history: sh
|
||||
bash_profile: sh
|
||||
zsh: sh
|
||||
zsh-theme: sh
|
||||
zshrc: sh
|
||||
mp4: video
|
||||
csv: xls
|
||||
gsheet: xls
|
||||
xlsx: xls
|
||||
yaml: yml
|
||||
rar: zip
|
||||
tar: zip
|
60
colorls.rb
Normal file
60
colorls.rb
Normal file
|
@ -0,0 +1,60 @@
|
|||
require 'colorize'
|
||||
require 'yaml'
|
||||
require 'facets'
|
||||
|
||||
# Source for icons unicode: http://nerdfonts.com/
|
||||
class ColorLS
|
||||
def initialize(input)
|
||||
@input = input || Dir.pwd
|
||||
@contents = Dir.entries(@input) - ['.', '..']
|
||||
@count = { folders: 0, recognized_files: 0, unrecognized_files: 0 }
|
||||
@formats = load_from_yaml('formats.yaml').symbolize_keys
|
||||
@aliases = load_from_yaml('aliases.yaml')
|
||||
.to_a
|
||||
.map! { |k, v| [k.to_sym, v.to_sym] }
|
||||
.to_h
|
||||
@format_keys = @formats.keys
|
||||
@aliase_keys = @aliases.keys
|
||||
end
|
||||
|
||||
def ls
|
||||
@contents.each { |content| print fetch_string(content, *options(content)) }
|
||||
|
||||
puts "\n\n\tFound #{@contents.length} contents in this directory"\
|
||||
"\n\t#{File.expand_path(@input)}."\
|
||||
"\n\n\t\tFolders\t\t\t: #{@count[:folders]}"\
|
||||
"\n\t\tRecognized files\t: #{@count[:recognized_files]}"\
|
||||
"\n\t\tUnrecognized files\t: #{@count[:unrecognized_files]}"
|
||||
.colorize(:white)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def fetch_string(content, key, color, increment)
|
||||
@count[increment] += 1
|
||||
|
||||
value = @formats[key]
|
||||
logo = value.gsub(/\\u[\da-f]{4}/i) { |m| [m[-4..-1].to_i(16)].pack('U') }
|
||||
"\n\t#{logo} #{content}".colorize(color)
|
||||
end
|
||||
|
||||
def load_from_yaml(filename)
|
||||
path = $PROGRAM_NAME.gsub('/colorls.rb', '')
|
||||
YAML.safe_load(File.read("#{path}/#{filename}"))
|
||||
end
|
||||
|
||||
def options(content)
|
||||
return %i[folder blue folders] if Dir.exist?("#{@input}/#{content}")
|
||||
|
||||
all_keys = @format_keys + @aliase_keys
|
||||
key = content.split('.').last.downcase.to_sym
|
||||
|
||||
return %i[file yellow unrecognized_files] unless all_keys.include?(key)
|
||||
|
||||
key = @aliases[key] unless @format_keys.include?(key)
|
||||
[key, :green, :recognized_files]
|
||||
end
|
||||
end
|
||||
|
||||
ColorLS.new(ARGV[0]).ls
|
||||
true
|
33
formats.yaml
Normal file
33
formats.yaml
Normal file
|
@ -0,0 +1,33 @@
|
|||
android: "\uf17b"
|
||||
apple: "\uf179"
|
||||
audio: "\uf001"
|
||||
avro: "\ue60b"
|
||||
c: "\ue61e"
|
||||
cpp: "\ue61d"
|
||||
css: "\ue749"
|
||||
doc: "\uf1c2"
|
||||
ebook: "\ue28b"
|
||||
file: "\uf15b"
|
||||
folder: "\uf115"
|
||||
font: "\uf031"
|
||||
gform: "\uf298"
|
||||
git: "\uf1d3"
|
||||
html: "\uf13b"
|
||||
image: "\uf1c5"
|
||||
js: "\ue74e"
|
||||
json: "\ue60b"
|
||||
less: "\ue758"
|
||||
md: "\uf48a"
|
||||
ppt: "\uf1c4"
|
||||
pdf: "\uf1c1"
|
||||
py: "\ue606"
|
||||
r: "\uf25d"
|
||||
rb: "\ue21e"
|
||||
rdb: "\ue76d"
|
||||
sh: "\uf489"
|
||||
txt: "\uf15c"
|
||||
video: "\uf03d"
|
||||
xls: "\uf1c3"
|
||||
xml: "\ue619"
|
||||
yml: "\uf481"
|
||||
zip: "\uf410"
|
Loading…
Reference in a new issue