initial commit [141.14.140.180,mike]
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/fatih/color"
|
||||
)
|
||||
|
||||
// Dateityp → Farbe, nach den file_type-Rollen des eza-Themes
|
||||
// (~/src/mwxcol/themes/eza/theme.yml), damit dieselbe Datei in eza und dx
|
||||
// dieselbe Farbe hat.
|
||||
var byExt = map[string]*color.Color{}
|
||||
|
||||
func register(c *color.Color, exts ...string) {
|
||||
for _, e := range exts {
|
||||
byExt[e] = c
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
// source — blau
|
||||
register(cBlue,
|
||||
"go", "c", "h", "cc", "cpp", "cxx", "hpp", "rs", "py", "pl", "pm", "t",
|
||||
"sh", "bash", "zsh", "fish", "js", "mjs", "cjs", "ts", "jsx", "tsx",
|
||||
"rb", "java", "kt", "swift", "m", "mm", "php", "lua", "sql", "r", "jl",
|
||||
"hs", "el", "vim", "scala", "cs", "dart", "zig", "asm", "s", "f90",
|
||||
"html", "htm", "css", "scss", "sass", "less", "vue", "svelte",
|
||||
"json", "yml", "yaml", "toml", "ini", "conf", "cfg", "xml", "plist",
|
||||
"md", "markdown", "tex", "awk", "sed")
|
||||
// compressed — orange
|
||||
register(cOrange,
|
||||
"zip", "tar", "gz", "tgz", "bz2", "tbz", "xz", "txz", "zst", "7z",
|
||||
"rar", "lz", "lzma", "z", "jar", "war", "dmg", "iso", "pkg", "deb", "rpm")
|
||||
// image — violett
|
||||
register(cViolet,
|
||||
"jpg", "jpeg", "png", "gif", "bmp", "tif", "tiff", "svg", "webp",
|
||||
"heic", "heif", "ico", "psd", "ai", "eps", "raw", "cr2", "nef", "dng",
|
||||
"stl", "obj3d")
|
||||
// video — pink
|
||||
register(cPink,
|
||||
"mp4", "mov", "avi", "mkv", "webm", "m4v", "mpg", "mpeg", "wmv", "flv", "m2ts")
|
||||
// music / lossless — grün
|
||||
register(cGreen,
|
||||
"mp3", "aac", "m4a", "ogg", "opus", "wma", "flac", "wav", "aiff", "aif", "alac")
|
||||
// crypto — rot
|
||||
register(cRed,
|
||||
"asc", "gpg", "pgp", "sig", "key", "pem", "crt", "cer", "p12", "kdbx")
|
||||
// document — weiß
|
||||
register(cWhite,
|
||||
"pdf", "doc", "docx", "odt", "xls", "xlsx", "ods", "ppt", "pptx", "odp",
|
||||
"epub", "rtf", "txt", "csv", "pages", "numbers")
|
||||
// compiled — grau
|
||||
register(cGrey,
|
||||
"o", "a", "so", "dylib", "obj", "lib", "class", "pyc", "pyo", "wasm", "d")
|
||||
// temp — dunkel
|
||||
register(cDarker,
|
||||
"tmp", "temp", "swp", "swo", "bak", "old", "orig", "rej", "lock",
|
||||
"part", "crdownload", "log")
|
||||
}
|
||||
|
||||
// build — gelb (README, Makefile, …)
|
||||
var byName = map[string]*color.Color{
|
||||
"makefile": cYellow, "gnumakefile": cYellow, "cmakelists.txt": cYellow,
|
||||
"dockerfile": cYellow, "justfile": cYellow, "rakefile": cYellow,
|
||||
"go.mod": cYellow, "go.sum": cYellow, "package.json": cYellow,
|
||||
"package-lock.json": cYellow, "cargo.toml": cYellow, "cargo.lock": cYellow,
|
||||
"license": cYellow, "copying": cYellow,
|
||||
".ds_store": cDarker, ".gitignore": cDark, ".gitattributes": cDark,
|
||||
}
|
||||
|
||||
func fileColor(name string, mode os.FileMode) *color.Color {
|
||||
if mode&0o111 != 0 { // ausführbar schlägt alles andere, wie in eza
|
||||
return cExecB
|
||||
}
|
||||
low := strings.ToLower(name)
|
||||
if c, ok := byName[low]; ok {
|
||||
return c
|
||||
}
|
||||
if strings.HasPrefix(low, "readme") || strings.HasPrefix(low, "makefile") {
|
||||
return cYellow
|
||||
}
|
||||
if strings.HasSuffix(name, "~") {
|
||||
return cDarker
|
||||
}
|
||||
if ext := strings.TrimPrefix(filepath.Ext(low), "."); ext != "" {
|
||||
if c, ok := byExt[ext]; ok {
|
||||
return c
|
||||
}
|
||||
}
|
||||
return cWhite
|
||||
}
|
||||
Reference in New Issue
Block a user