Fix pedantic clippy lints
This commit is contained in:
parent
9aa37c1519
commit
1e6649d52a
6 changed files with 27 additions and 25 deletions
|
@ -25,3 +25,6 @@ glob = "0.3"
|
||||||
anyhow = "1.0.98"
|
anyhow = "1.0.98"
|
||||||
axum = "0.8.3"
|
axum = "0.8.3"
|
||||||
tokio = { version = "1.44.2", features = ["full"] }
|
tokio = { version = "1.44.2", features = ["full"] }
|
||||||
|
|
||||||
|
[lints.clippy]
|
||||||
|
pedantic = "warn"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use axum::{extract::Path, response::IntoResponse};
|
use axum::{extract::Path, response::IntoResponse};
|
||||||
|
|
||||||
pub async fn get(Path(path): Path<String>) -> impl IntoResponse {
|
pub async fn get(Path(path): Path<String>) -> impl IntoResponse {
|
||||||
format!("Requested file path: {}", path)
|
format!("Requested file path: {path}")
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use axum::{extract::Path, response::IntoResponse};
|
use axum::{extract::Path, response::IntoResponse};
|
||||||
|
|
||||||
pub async fn get(Path(id): Path<String>) -> impl IntoResponse {
|
pub async fn get(Path(id): Path<String>) -> impl IntoResponse {
|
||||||
format!("User ID: {}", id)
|
format!("User ID: {id}")
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ struct MyFolderRouter();
|
||||||
pub async fn server() -> anyhow::Result<()> {
|
pub async fn server() -> anyhow::Result<()> {
|
||||||
// Create app state
|
// Create app state
|
||||||
let app_state = AppState {
|
let app_state = AppState {
|
||||||
_foo: "".to_string(),
|
_foo: String::new(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Use the init fn generated above
|
// Use the init fn generated above
|
||||||
|
|
|
@ -14,7 +14,7 @@ struct MyFolderRouter();
|
||||||
async fn main() -> anyhow::Result<()> {
|
async fn main() -> anyhow::Result<()> {
|
||||||
// Create app state
|
// Create app state
|
||||||
let app_state = AppState {
|
let app_state = AppState {
|
||||||
_foo: "".to_string(),
|
_foo: String::new(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Use the init fn generated above
|
// Use the init fn generated above
|
||||||
|
|
41
src/lib.rs
41
src/lib.rs
|
@ -177,6 +177,7 @@ impl ModuleDir {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates an Axum router module tree & creation function
|
/// Creates an Axum router module tree & creation function
|
||||||
/// by scanning a directory for `route.rs` files.
|
/// by scanning a directory for `route.rs` files.
|
||||||
///
|
///
|
||||||
|
@ -200,7 +201,7 @@ pub fn folder_router(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||||
let state_type = args.state_type;
|
let state_type = args.state_type;
|
||||||
|
|
||||||
// Get the project root directory
|
// Get the project root directory
|
||||||
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap();
|
let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap_or("./".to_string());
|
||||||
let base_dir = Path::new(&manifest_dir).join(&base_path);
|
let base_dir = Path::new(&manifest_dir).join(&base_path);
|
||||||
|
|
||||||
// Collect route files
|
// Collect route files
|
||||||
|
@ -216,18 +217,15 @@ pub fn folder_router(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn replace_special_chars(input: &str) -> String {
|
|
||||||
input
|
|
||||||
.chars()
|
|
||||||
.map(|c| if c.is_alphanumeric() { c } else { '_' })
|
|
||||||
.collect()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Build module tree
|
// Build module tree
|
||||||
let mut root = ModuleDir::new(&format!(
|
let mut root = ModuleDir::new(&format!(
|
||||||
"__folder_router_{}",
|
"__folder_router_{}",
|
||||||
replace_special_chars(&base_path)
|
base_path
|
||||||
|
.chars()
|
||||||
|
.map(|c| if c.is_alphanumeric() { c } else { '_' })
|
||||||
|
.collect::<String>()
|
||||||
));
|
));
|
||||||
|
|
||||||
for (route_path, rel_path) in &routes {
|
for (route_path, rel_path) in &routes {
|
||||||
add_to_module_tree(&mut root, rel_path, route_path);
|
add_to_module_tree(&mut root, rel_path, route_path);
|
||||||
}
|
}
|
||||||
|
@ -235,7 +233,10 @@ pub fn folder_router(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||||
// Generate module tree
|
// Generate module tree
|
||||||
let root_mod_ident = format_ident!("{}", root.name);
|
let root_mod_ident = format_ident!("{}", root.name);
|
||||||
|
|
||||||
let base_path_lit = LitStr::new(base_dir.to_str().unwrap(), proc_macro2::Span::call_site());
|
let base_path_lit = LitStr::new(
|
||||||
|
base_dir.to_str().unwrap_or("./"),
|
||||||
|
proc_macro2::Span::call_site(),
|
||||||
|
);
|
||||||
let mod_hierarchy = generate_module_hierarchy(&root);
|
let mod_hierarchy = generate_module_hierarchy(&root);
|
||||||
|
|
||||||
// Generate route registrations
|
// Generate route registrations
|
||||||
|
@ -314,15 +315,13 @@ pub fn folder_router(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||||
/// it returns: `vec!["get"]`
|
/// it returns: `vec!["get"]`
|
||||||
fn methods_for_route(route_path: &PathBuf) -> Vec<&'static str> {
|
fn methods_for_route(route_path: &PathBuf) -> Vec<&'static str> {
|
||||||
// Read the file content
|
// Read the file content
|
||||||
let file_content = match fs::read_to_string(route_path) {
|
let Ok(file_content) = fs::read_to_string(route_path) else {
|
||||||
Ok(content) => content,
|
return Vec::new();
|
||||||
Err(_) => return Vec::new(),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Parse the file content into a syn syntax tree
|
// Parse the file content into a syn syntax tree
|
||||||
let file = match parse_file(&file_content) {
|
let Ok(file) = parse_file(&file_content) else {
|
||||||
Ok(file) => file,
|
return Vec::new();
|
||||||
Err(_) => return Vec::new(),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Define HTTP methods we're looking for
|
// Define HTTP methods we're looking for
|
||||||
|
@ -433,9 +432,9 @@ fn normalize_module_name(name: &str) -> String {
|
||||||
if name.starts_with('[') && name.ends_with(']') {
|
if name.starts_with('[') && name.ends_with(']') {
|
||||||
let inner = &name[1..name.len() - 1];
|
let inner = &name[1..name.len() - 1];
|
||||||
if let Some(stripped) = inner.strip_prefix("...") {
|
if let Some(stripped) = inner.strip_prefix("...") {
|
||||||
format!("___{}", stripped)
|
format!("___{stripped}")
|
||||||
} else {
|
} else {
|
||||||
format!("__{}", inner)
|
format!("__{inner}")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
name.replace(['-', '.'], "_")
|
name.replace(['-', '.'], "_")
|
||||||
|
@ -469,12 +468,12 @@ fn path_to_module_path(rel_path: &Path) -> (String, Vec<String>) {
|
||||||
if segment.starts_with('[') && segment.ends_with(']') {
|
if segment.starts_with('[') && segment.ends_with(']') {
|
||||||
let param = &segment[1..segment.len() - 1];
|
let param = &segment[1..segment.len() - 1];
|
||||||
if let Some(stripped) = param.strip_prefix("...") {
|
if let Some(stripped) = param.strip_prefix("...") {
|
||||||
axum_path.push_str(&format!("/{{*{}}}", stripped));
|
axum_path = format!("/{{*{stripped}}}");
|
||||||
} else {
|
} else {
|
||||||
axum_path.push_str(&format!("/{{:{}}}", param));
|
axum_path = format!("/{{:{param}}}");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
axum_path.push_str(&format!("/{}", segment));
|
axum_path = format!("/{segment}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue