refactor(build): reformat code and add tonic health dependency
- Reformatted build script with proper indentation and line breaks - Added tonic-health dependency to Cargo.toml and updated lock file - Improved error handling in disk cache with concurrent deletion checks - Refactored conditional chains using && and let expressions - Reformatted struct initialization and function parameter lists - Added proper spacing and alignment in language stats processing - Improved assertion formatting in test cases - Reorganized import statements and code layout in multiple files - Updated metrics functions with better parameter handling and formatting
This commit is contained in:
@@ -111,16 +111,19 @@ fn generate_linguist(
|
||||
// Merge: primary wins over secondary, with explicit priority for known conflicts
|
||||
// These are common extensions where linguist has multiple primary claims
|
||||
let priority_overrides: HashMap<&str, &str> = [
|
||||
(".rs", "Rust"), // RenderScript also claims .rs
|
||||
(".md", "Markdown"), // GCC Machine Description also claims .md
|
||||
(".r", "R"), // Rebol also claims .r
|
||||
(".s", "Assembly"), // Multiple assemblers claim .s
|
||||
(".ms", "MAXScript"), // Unix Assembly also claims .ms
|
||||
(".g", "G-code"), // GAP also claims .g
|
||||
(".m", "Objective-C"), // Mercury, MUF, etc. also claim .m
|
||||
(".w", "CWeb"), // OpenSCAD also claims .w
|
||||
(".q", "Q"), // KBD also claims .q
|
||||
].iter().cloned().collect();
|
||||
(".rs", "Rust"), // RenderScript also claims .rs
|
||||
(".md", "Markdown"), // GCC Machine Description also claims .md
|
||||
(".r", "R"), // Rebol also claims .r
|
||||
(".s", "Assembly"), // Multiple assemblers claim .s
|
||||
(".ms", "MAXScript"), // Unix Assembly also claims .ms
|
||||
(".g", "G-code"), // GAP also claims .g
|
||||
(".m", "Objective-C"), // Mercury, MUF, etc. also claim .m
|
||||
(".w", "CWeb"), // OpenSCAD also claims .w
|
||||
(".q", "Q"), // KBD also claims .q
|
||||
]
|
||||
.iter()
|
||||
.cloned()
|
||||
.collect();
|
||||
|
||||
for (ext, (lang, ltype)) in ext_primary {
|
||||
if let Some(&preferred) = priority_overrides.get(ext.as_str()) {
|
||||
@@ -140,7 +143,11 @@ fn generate_linguist(
|
||||
if let Some(entry) = languages.get(preferred)
|
||||
&& entry.extensions.iter().any(|e| e.to_lowercase() == ext)
|
||||
{
|
||||
ext_map.push((ext.to_string(), preferred.to_string(), entry.lang_type.clone()));
|
||||
ext_map.push((
|
||||
ext.to_string(),
|
||||
preferred.to_string(),
|
||||
entry.lang_type.clone(),
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -172,8 +179,12 @@ fn generate_linguist(
|
||||
code.push_str("/// Key is lowercase extension including the dot, e.g. \".rs\".\n");
|
||||
code.push_str("pub static EXTENSION_MAP: &[(&str, &str, &str)] = &[\n");
|
||||
for (ext, lang, ltype) in &ext_map {
|
||||
code.push_str(&format!(" (\"{}\", \"{}\", \"{}\"),\n",
|
||||
escape_str(ext), escape_str(lang), escape_str(ltype)));
|
||||
code.push_str(&format!(
|
||||
" (\"{}\", \"{}\", \"{}\"),\n",
|
||||
escape_str(ext),
|
||||
escape_str(lang),
|
||||
escape_str(ltype)
|
||||
));
|
||||
}
|
||||
code.push_str("];\n\n");
|
||||
|
||||
@@ -182,8 +193,12 @@ fn generate_linguist(
|
||||
code.push_str("/// Key is exact filename, e.g. \"Makefile\", \"Dockerfile\".\n");
|
||||
code.push_str("pub static FILENAME_MAP: &[(&str, &str, &str)] = &[\n");
|
||||
for (fname, lang, ltype) in &fname_map {
|
||||
code.push_str(&format!(" (\"{}\", \"{}\", \"{}\"),\n",
|
||||
escape_str(fname), escape_str(lang), escape_str(ltype)));
|
||||
code.push_str(&format!(
|
||||
" (\"{}\", \"{}\", \"{}\"),\n",
|
||||
escape_str(fname),
|
||||
escape_str(lang),
|
||||
escape_str(ltype)
|
||||
));
|
||||
}
|
||||
code.push_str("];\n\n");
|
||||
|
||||
@@ -191,8 +206,11 @@ fn generate_linguist(
|
||||
code.push_str("/// Language name to type mapping.\n");
|
||||
code.push_str("pub static LANG_TYPE_MAP: &[(&str, &str)] = &[\n");
|
||||
for (lang, ltype) in &lang_type_map {
|
||||
code.push_str(&format!(" (\"{}\", \"{}\"),\n",
|
||||
escape_str(lang), escape_str(ltype)));
|
||||
code.push_str(&format!(
|
||||
" (\"{}\", \"{}\"),\n",
|
||||
escape_str(lang),
|
||||
escape_str(ltype)
|
||||
));
|
||||
}
|
||||
code.push_str("];\n\n");
|
||||
|
||||
@@ -202,8 +220,11 @@ fn generate_linguist(
|
||||
let mut group_vec: Vec<_> = lang_group_map.iter().collect();
|
||||
group_vec.sort_by(|a, b| a.0.cmp(b.0));
|
||||
for (lang, group) in group_vec {
|
||||
code.push_str(&format!(" (\"{}\", \"{}\"),\n",
|
||||
escape_str(lang), escape_str(group)));
|
||||
code.push_str(&format!(
|
||||
" (\"{}\", \"{}\"),\n",
|
||||
escape_str(lang),
|
||||
escape_str(group)
|
||||
));
|
||||
}
|
||||
code.push_str("];\n\n");
|
||||
|
||||
@@ -213,23 +234,28 @@ fn generate_linguist(
|
||||
code.push_str(" match ext {\n");
|
||||
|
||||
// Image extensions
|
||||
let image_exts = [".png", ".jpg", ".jpeg", ".gif", ".bmp", ".ico", ".svg",
|
||||
".webp", ".tiff", ".tif", ".psd", ".raw", ".heic", ".heif", ".avif",
|
||||
".apng", ".jfif", ".pjpeg", ".pjp"];
|
||||
let image_exts = [
|
||||
".png", ".jpg", ".jpeg", ".gif", ".bmp", ".ico", ".svg", ".webp", ".tiff", ".tif", ".psd",
|
||||
".raw", ".heic", ".heif", ".avif", ".apng", ".jfif", ".pjpeg", ".pjp",
|
||||
];
|
||||
for ext in &image_exts {
|
||||
code.push_str(&format!(" \"{}\" => \"Image\",\n", ext));
|
||||
}
|
||||
|
||||
// Video extensions
|
||||
let video_exts = [".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv", ".webm",
|
||||
".m4v", ".mpg", ".mpeg", ".3gp", ".3g2", ".ogv", ".vob"];
|
||||
let video_exts = [
|
||||
".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv", ".webm", ".m4v", ".mpg", ".mpeg", ".3gp",
|
||||
".3g2", ".ogv", ".vob",
|
||||
];
|
||||
for ext in &video_exts {
|
||||
code.push_str(&format!(" \"{}\" => \"Video\",\n", ext));
|
||||
}
|
||||
|
||||
// Audio extensions
|
||||
let audio_exts = [".mp3", ".wav", ".flac", ".aac", ".ogg", ".wma", ".m4a",
|
||||
".opus", ".aiff", ".ape", ".alac", ".mid", ".midi"];
|
||||
let audio_exts = [
|
||||
".mp3", ".wav", ".flac", ".aac", ".ogg", ".wma", ".m4a", ".opus", ".aiff", ".ape", ".alac",
|
||||
".mid", ".midi",
|
||||
];
|
||||
for ext in &audio_exts {
|
||||
code.push_str(&format!(" \"{}\" => \"Audio\",\n", ext));
|
||||
}
|
||||
@@ -241,11 +267,12 @@ fn generate_linguist(
|
||||
}
|
||||
|
||||
// Other binary
|
||||
let binary_exts = [".exe", ".dll", ".so", ".dylib", ".a", ".lib", ".o",
|
||||
".obj", ".bin", ".dat", ".db", ".sqlite", ".sqlite3", ".pyc", ".pyo",
|
||||
".class", ".jar", ".war", ".ear", ".zip", ".tar", ".gz",
|
||||
".bz2", ".xz", ".7z", ".rar", ".pdf", ".doc", ".docx", ".xls",
|
||||
".xlsx", ".ppt", ".pptx", ".odt", ".ods", ".odp", ".wasm", ".node"];
|
||||
let binary_exts = [
|
||||
".exe", ".dll", ".so", ".dylib", ".a", ".lib", ".o", ".obj", ".bin", ".dat", ".db",
|
||||
".sqlite", ".sqlite3", ".pyc", ".pyo", ".class", ".jar", ".war", ".ear", ".zip", ".tar",
|
||||
".gz", ".bz2", ".xz", ".7z", ".rar", ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt",
|
||||
".pptx", ".odt", ".ods", ".odp", ".wasm", ".node",
|
||||
];
|
||||
for ext in &binary_exts {
|
||||
code.push_str(&format!(" \"{}\" => \"Binary\",\n", ext));
|
||||
}
|
||||
@@ -259,8 +286,7 @@ fn generate_linguist(
|
||||
}
|
||||
|
||||
fn escape_str(s: &str) -> String {
|
||||
s.replace('\\', "\\\\")
|
||||
.replace('"', "\\\"")
|
||||
s.replace('\\', "\\\\").replace('"', "\\\"")
|
||||
}
|
||||
|
||||
fn proto_files(proto_dir: &Path) -> Result<Vec<PathBuf>, Box<dyn std::error::Error>> {
|
||||
|
||||
Reference in New Issue
Block a user