locc 1.1.0

CLI for counting lines of code per language
use std::path::Path;

pub fn detect(path: &Path) -> Option<(&'static str, (u8, u8, u8))> {
    let ext = path.extension()?.to_str()?;
    match ext {
        "rs" => Some(("Rust", (222, 165, 132))),
        "py" => Some(("Python", (53, 114, 165))),
        "js" => Some(("JavaScript", (241, 224, 90))),
        "ts" => Some(("TypeScript", (49, 120, 198))),
        "go" => Some(("Go", (0, 173, 216))),
        "rb" => Some(("Ruby", (112, 21, 22))),
        "c" | "h" => Some(("C", (85, 85, 85))),
        "cpp" | "hpp" | "cc" | "hh" | "cxx" | "hxx" => Some(("C++", (243, 75, 125))),
        "cs" => Some(("C#", (23, 134, 0))),
        "java" => Some(("Java", (176, 114, 25))),
        "sh" | "bash" | "zsh" | "fish" | "ksh" => Some(("Shell", (137, 224, 81))),
        "html" | "htm" => Some(("HTML", (227, 76, 38))),
        "css" => Some(("CSS", (86, 61, 124))),
        "dart" => Some(("Dart", (0, 180, 171))),
        "kt" | "kts" => Some(("Kotlin", (169, 123, 255))),
        "swift" => Some(("Swift", (240, 81, 56))),
        "zig" => Some(("Zig", (236, 130, 21))),
        "lua" => Some(("Lua", (0, 0, 128))),
        "hs" => Some(("Haskell", (94, 80, 134))),
        "scala" => Some(("Scala", (194, 45, 64))),
        "ex" | "exs" => Some(("Elixir", (78, 47, 99))),
        "clj" | "cljs" | "cljc" => Some(("Clojure", (219, 88, 55))),
        "pl" | "pm" => Some(("Perl", (2, 152, 130))),
        "r" | "R" => Some(("R", (25, 145, 208))),
        "m" | "mm" => Some(("Objective-C", (67, 142, 255))),
        "vim" => Some(("Vim script", (19, 191, 123))),
        _ => None,
    }
}