mirror of
https://github.com/jesseduffield/lazygit.git
synced 2024-12-16 11:37:01 +02:00
332 lines
11 KiB
Go
332 lines
11 KiB
Go
package icons
|
|
|
|
import (
|
|
"path/filepath"
|
|
)
|
|
|
|
// https://github.com/ogham/exa/blob/master/src/output/icons.rs
|
|
const (
|
|
DEFAULT_FILE_ICON = "\uf15b" //
|
|
DEFAULT_SUBMODULE_ICON = "\uf1d3" //
|
|
DEFAULT_DIRECTORY_ICON = "\uf114" //
|
|
)
|
|
|
|
var nameIconMap = map[string]string{
|
|
".Trash": "\uf1f8", //
|
|
".atom": "\ue764", //
|
|
".bashprofile": "\ue615", //
|
|
".bashrc": "\uf489", //
|
|
".idea": "\ue7b5", //
|
|
".git": "\uf1d3", //
|
|
".gitattributes": "\uf1d3", //
|
|
".gitconfig": "\uf1d3", //
|
|
".github": "\uf408", //
|
|
".gitignore": "\uf1d3", //
|
|
".gitmodules": "\uf1d3", //
|
|
".rvm": "\ue21e", //
|
|
".vimrc": "\ue62b", //
|
|
".vscode": "\ue70c", //
|
|
".zshrc": "\uf489", //
|
|
"Cargo.lock": "\ue7a8", //
|
|
"Cargo.toml": "\ue7a8", //
|
|
"bin": "\ue5fc", //
|
|
"config": "\ue5fc", //
|
|
"docker-compose.yml": "\uf308", //
|
|
"Dockerfile": "\uf308", //
|
|
"ds_store": "\uf179", //
|
|
"gitignore_global": "\uf1d3", //
|
|
"go.mod": "\ue626", //
|
|
"go.sum": "\ue626", //
|
|
"gradle": "\ue256", //
|
|
"gruntfile.coffee": "\ue611", //
|
|
"gruntfile.js": "\ue611", //
|
|
"gruntfile.ls": "\ue611", //
|
|
"gulpfile.coffee": "\ue610", //
|
|
"gulpfile.js": "\ue610", //
|
|
"gulpfile.ls": "\ue610", //
|
|
"hidden": "\uf023", //
|
|
"include": "\ue5fc", //
|
|
"lib": "\uf121", //
|
|
"localized": "\uf179", //
|
|
"Makefile": "\uf489", //
|
|
"node_modules": "\ue718", //
|
|
"npmignore": "\ue71e", //
|
|
"PKGBUILD": "\uf303", //
|
|
"rubydoc": "\ue73b", //
|
|
"yarn.lock": "\ue718", //
|
|
}
|
|
|
|
var extIconMap = map[string]string{
|
|
".ai": "\ue7b4", //
|
|
".android": "\ue70e", //
|
|
".apk": "\ue70e", //
|
|
".apple": "\uf179", //
|
|
".avi": "\uf03d", //
|
|
".avif": "\uf1c5", //
|
|
".avro": "\ue60b", //
|
|
".awk": "\uf489", //
|
|
".bash": "\uf489", //
|
|
".bash_history": "\uf489", //
|
|
".bash_profile": "\uf489", //
|
|
".bashrc": "\uf489", //
|
|
".bat": "\uf17a", //
|
|
".bats": "\uf489", //
|
|
".bmp": "\uf1c5", //
|
|
".bz": "\uf410", //
|
|
".bz2": "\uf410", //
|
|
".c": "\ue61e", //
|
|
".c++": "\ue61d", //
|
|
".cab": "\ue70f", //
|
|
".cc": "\ue61d", //
|
|
".cfg": "\ue615", //
|
|
".class": "\ue256", //
|
|
".clj": "\ue768", //
|
|
".cljs": "\ue76a", //
|
|
".cls": "\uf034", //
|
|
".cmd": "\ue70f", //
|
|
".coffee": "\uf0f4", //
|
|
".conf": "\ue615", //
|
|
".cp": "\ue61d", //
|
|
".cpio": "\uf410", //
|
|
".cpp": "\ue61d", //
|
|
".cs": "\uf81a", //
|
|
".csh": "\uf489", //
|
|
".cshtml": "\uf1fa", //
|
|
".csproj": "\uf81a", //
|
|
".css": "\ue749", //
|
|
".csv": "\uf1c3", //
|
|
".csx": "\uf81a", //
|
|
".cxx": "\ue61d", //
|
|
".d": "\ue7af", //
|
|
".dart": "\ue798", //
|
|
".db": "\uf1c0", //
|
|
".deb": "\ue77d", //
|
|
".diff": "\uf440", //
|
|
".djvu": "\uf02d", //
|
|
".dll": "\ue70f", //
|
|
".doc": "\uf1c2", //
|
|
".docx": "\uf1c2", //
|
|
".ds_store": "\uf179", //
|
|
".DS_store": "\uf179", //
|
|
".dump": "\uf1c0", //
|
|
".ebook": "\ue28b", //
|
|
".ebuild": "\uf30d", //
|
|
".editorconfig": "\ue615", //
|
|
".ejs": "\ue618", //
|
|
".elm": "\ue62c", //
|
|
".env": "\uf462", //
|
|
".eot": "\uf031", //
|
|
".epub": "\ue28a", //
|
|
".erb": "\ue73b", //
|
|
".erl": "\ue7b1", //
|
|
".ex": "\ue62d", //
|
|
".exe": "\uf17a", //
|
|
".exs": "\ue62d", //
|
|
".fish": "\uf489", //
|
|
".flac": "\uf001", //
|
|
".flv": "\uf03d", //
|
|
".font": "\uf031", //
|
|
".fs": "\ue7a7", //
|
|
".fsi": "\ue7a7", //
|
|
".fsx": "\ue7a7", //
|
|
".gdoc": "\uf1c2", //
|
|
".gem": "\ue21e", //
|
|
".gemfile": "\ue21e", //
|
|
".gemspec": "\ue21e", //
|
|
".gform": "\uf298", //
|
|
".gif": "\uf1c5", //
|
|
".git": "\uf1d3", //
|
|
".gitattributes": "\uf1d3", //
|
|
".gitignore": "\uf1d3", //
|
|
".gitmodules": "\uf1d3", //
|
|
".go": "\ue626", //
|
|
".gradle": "\ue256", //
|
|
".groovy": "\ue775", //
|
|
".gsheet": "\uf1c3", //
|
|
".gslides": "\uf1c4", //
|
|
".guardfile": "\ue21e", //
|
|
".gz": "\uf410", //
|
|
".h": "\uf0fd", //
|
|
".hbs": "\ue60f", //
|
|
".hpp": "\uf0fd", //
|
|
".hs": "\ue777", //
|
|
".htm": "\uf13b", //
|
|
".html": "\uf13b", //
|
|
".hxx": "\uf0fd", //
|
|
".ico": "\uf1c5", //
|
|
".image": "\uf1c5", //
|
|
".iml": "\ue7b5", //
|
|
".ini": "\uf17a", //
|
|
".ipynb": "\ue606", //
|
|
".iso": "\ue271", //
|
|
".j2c": "\uf1c5", //
|
|
".j2k": "\uf1c5", //
|
|
".jad": "\ue256", //
|
|
".jar": "\ue256", //
|
|
".java": "\ue256", //
|
|
".jfi": "\uf1c5", //
|
|
".jfif": "\uf1c5", //
|
|
".jif": "\uf1c5", //
|
|
".jl": "\ue624", //
|
|
".jmd": "\uf48a", //
|
|
".jp2": "\uf1c5", //
|
|
".jpe": "\uf1c5", //
|
|
".jpeg": "\uf1c5", //
|
|
".jpg": "\uf1c5", //
|
|
".jpx": "\uf1c5", //
|
|
".js": "\ue74e", //
|
|
".json": "\ue60b", //
|
|
".jsx": "\ue7ba", //
|
|
".jxl": "\uf1c5", //
|
|
".ksh": "\uf489", //
|
|
".latex": "\uf034", //
|
|
".less": "\ue758", //
|
|
".lhs": "\ue777", //
|
|
".license": "\uf718", //
|
|
".localized": "\uf179", //
|
|
".lock": "\uf023", //
|
|
".log": "\uf18d", //
|
|
".lua": "\ue620", //
|
|
".lz": "\uf410", //
|
|
".lz4": "\uf410", //
|
|
".lzh": "\uf410", //
|
|
".lzma": "\uf410", //
|
|
".lzo": "\uf410", //
|
|
".m": "\ue61e", //
|
|
".mm": "\ue61d", //
|
|
".m4a": "\uf001", //
|
|
".markdown": "\uf48a", //
|
|
".md": "\uf48a", //
|
|
".mjs": "\ue74e", //
|
|
".mk": "\uf489", //
|
|
".mkd": "\uf48a", //
|
|
".mkv": "\uf03d", //
|
|
".mobi": "\ue28b", //
|
|
".mov": "\uf03d", //
|
|
".mp3": "\uf001", //
|
|
".mp4": "\uf03d", //
|
|
".msi": "\ue70f", //
|
|
".mustache": "\ue60f", //
|
|
".nix": "\uf313", //
|
|
".node": "\uf898", //
|
|
".npmignore": "\ue71e", //
|
|
".odp": "\uf1c4", //
|
|
".ods": "\uf1c3", //
|
|
".odt": "\uf1c2", //
|
|
".ogg": "\uf001", //
|
|
".ogv": "\uf03d", //
|
|
".otf": "\uf031", //
|
|
".part": "\uf43a", //
|
|
".patch": "\uf440", //
|
|
".pdf": "\uf1c1", //
|
|
".php": "\ue73d", //
|
|
".pl": "\ue769", //
|
|
".png": "\uf1c5", //
|
|
".ppt": "\uf1c4", //
|
|
".pptx": "\uf1c4", //
|
|
".procfile": "\ue21e", //
|
|
".properties": "\ue60b", //
|
|
".ps1": "\uf489", //
|
|
".psd": "\ue7b8", //
|
|
".pxm": "\uf1c5", //
|
|
".py": "\ue606", //
|
|
".pyc": "\ue606", //
|
|
".r": "\uf25d", //
|
|
".rakefile": "\ue21e", //
|
|
".rar": "\uf410", //
|
|
".razor": "\uf1fa", //
|
|
".rb": "\ue21e", //
|
|
".rdata": "\uf25d", //
|
|
".rdb": "\ue76d", //
|
|
".rdoc": "\uf48a", //
|
|
".rds": "\uf25d", //
|
|
".readme": "\uf48a", //
|
|
".rlib": "\ue7a8", //
|
|
".rmd": "\uf48a", //
|
|
".rpm": "\ue7bb", //
|
|
".rs": "\ue7a8", //
|
|
".rspec": "\ue21e", //
|
|
".rspec_parallel": "\ue21e", //
|
|
".rspec_status": "\ue21e", //
|
|
".rss": "\uf09e", //
|
|
".rtf": "\uf718", //
|
|
".ru": "\ue21e", //
|
|
".rubydoc": "\ue73b", //
|
|
".sass": "\ue603", //
|
|
".scala": "\ue737", //
|
|
".scss": "\ue749", //
|
|
".sh": "\uf489", //
|
|
".shell": "\uf489", //
|
|
".slim": "\ue73b", //
|
|
".sln": "\ue70c", //
|
|
".so": "\uf17c", //
|
|
".sql": "\uf1c0", //
|
|
".sqlite3": "\ue7c4", //
|
|
".sty": "\uf034", //
|
|
".styl": "\ue600", //
|
|
".stylus": "\ue600", //
|
|
".svg": "\uf1c5", //
|
|
".swift": "\ue755", //
|
|
".tar": "\uf410", //
|
|
".taz": "\uf410", //
|
|
".tbz": "\uf410", //
|
|
".tbz2": "\uf410", //
|
|
".tex": "\uf034", //
|
|
".tgz": "\uf410", //
|
|
".tiff": "\uf1c5", //
|
|
".tlz": "\uf410", //
|
|
".toml": "\ue615", //
|
|
".torrent": "\ue275", //
|
|
".ts": "\ue628", //
|
|
".tsv": "\uf1c3", //
|
|
".tsx": "\ue7ba", //
|
|
".ttf": "\uf031", //
|
|
".twig": "\ue61c", //
|
|
".txt": "\uf15c", //
|
|
".txz": "\uf410", //
|
|
".tz": "\uf410", //
|
|
".tzo": "\uf410", //
|
|
".video": "\uf03d", //
|
|
".vim": "\ue62b", //
|
|
".vue": "\ufd42", // ﵂
|
|
".war": "\ue256", //
|
|
".wav": "\uf001", //
|
|
".webm": "\uf03d", //
|
|
".webp": "\uf1c5", //
|
|
".windows": "\uf17a", //
|
|
".woff": "\uf031", //
|
|
".woff2": "\uf031", //
|
|
".xhtml": "\uf13b", //
|
|
".xls": "\uf1c3", //
|
|
".xlsx": "\uf1c3", //
|
|
".xml": "\uf121", //
|
|
".xul": "\uf121", //
|
|
".xz": "\uf410", //
|
|
".yaml": "\uf481", //
|
|
".yml": "\uf481", //
|
|
".zip": "\uf410", //
|
|
".zsh": "\uf489", //
|
|
".zsh-theme": "\uf489", //
|
|
".zshrc": "\uf489", //
|
|
".zst": "\uf410", //
|
|
}
|
|
|
|
func IconForFile(name string, isSubmodule bool, isDirectory bool) string {
|
|
base := filepath.Base(name)
|
|
if icon, ok := nameIconMap[base]; ok {
|
|
return icon
|
|
}
|
|
|
|
ext := filepath.Ext(name)
|
|
if icon, ok := extIconMap[ext]; ok {
|
|
return icon
|
|
}
|
|
|
|
if isSubmodule {
|
|
return DEFAULT_SUBMODULE_ICON
|
|
} else if isDirectory {
|
|
return DEFAULT_DIRECTORY_ICON
|
|
}
|
|
return DEFAULT_FILE_ICON
|
|
}
|