use std::path::Path;
use colored::Colorize;
pub enum FileType {
Config,
Rust,
C,
CPP,
CS,
Zig,
Python,
JavaScript,
TypeScript,
Html,
Css,
Scss,
React,
None,
}
pub fn get_file_type(file: String) -> FileType {
let path = Path::new(&file);
match path.extension() {
Some(ext) => {
match ext.to_string_lossy().as_ref() {
"rs" => FileType::Rust,
"c" => FileType::C,
"cpp" | "cc" | "cxx" => FileType::CPP,
"cs" => FileType::CS,
"zig" => FileType::Zig,
"py" => FileType::Python,
"js" => FileType::JavaScript,
"ts" => FileType::TypeScript,
"htm" | "html" => FileType::Html,
"css" => FileType::Css,
"scss" | "sass" => FileType::Scss,
"jsx" | "tsx" => FileType::React,
_ => FileType::Config
}
},
None => FileType::None,
}
}
pub fn get_file_type_icon(file_type: FileType) -> String {
match file_type {
FileType::Rust => format!("{}", "".truecolor(206, 66, 43)),
FileType::Config => format!("{}", "".truecolor(128, 128, 128)),
FileType::C => format!("{}", "".truecolor(57, 74, 171)),
FileType::CPP => format!("{}", "".truecolor(0, 89, 156)),
FileType::CS => format!("{}", "".truecolor(149, 60, 173)),
FileType::Zig => format!("{}", "".truecolor(247, 164, 29)),
FileType::Python => format!("{}", "".truecolor(255, 224, 82)),
FileType::JavaScript => format!("{}", "".truecolor(240, 219, 79)),
FileType::TypeScript => format!("{}", "".truecolor(0, 122, 204)),
FileType::Html => format!("{}", "".truecolor(225, 78, 29)),
FileType::Css => format!("{}", "".truecolor(2, 119, 189)),
FileType::Scss => format!("{}", "".truecolor(205, 103, 153)),
FileType::React => format!("{}", "".truecolor(0, 216, 255)),
_ => "".to_string()
}
}
pub fn render_file(file_name: String, file_type: FileType) -> String {
format!("{} {}", get_file_type_icon(file_type), file_name)
}