mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-17 20:27:10 +02:00
- Serveur Rust (server-rs/, axum + sqlx) : les 148 adresses de l'API, l'interface, les migrations de démarrage et les tâches de fond ; même comportement que Node (banc : 2027 cas, 0 écart hors écarts déclarés USERS-02, RAPPRO-21, R4, R5). - Node retiré : server/, dépendances serveur, image Docker sans Node (51 Mo), docker-compose à un seul service applicatif. - R4 : écritures d'un autre site refusées (Sec-Fetch-Site / Origin). - R5 : « aujourd'hui » et sauvegarde automatique à l'heure de Paris. - R6 : mainteneur dans .github/CODEOWNERS. - Menu latéral : Accueil puis Calendrier en tête. - Plan et état : docs/PLAN-MIGRATION-RUST.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ke2qyS8rgacP3ap5iezDbM
55 lines
1.9 KiB
Rust
55 lines
1.9 KiB
Rust
// Liste des motifs d'adresse déclarés dans src/modules/*.rs et src/router.rs
|
|
// (`.route("…")`), pour retrouver la route qu'Express aurait servie
|
|
// (src/express_routes.rs).
|
|
|
|
use std::collections::BTreeSet;
|
|
use std::fs;
|
|
use std::path::Path;
|
|
|
|
fn main() {
|
|
println!("cargo:rerun-if-changed=src/modules");
|
|
println!("cargo:rerun-if-changed=src/router.rs");
|
|
let mut patterns = BTreeSet::new();
|
|
collect(
|
|
&fs::read_to_string("src/router.rs").expect("src/router.rs"),
|
|
&mut patterns,
|
|
);
|
|
for entry in fs::read_dir("src/modules").expect("src/modules") {
|
|
let path = entry.expect("fichier de module").path();
|
|
if path.extension().is_some_and(|ext| ext == "rs") {
|
|
println!("cargo:rerun-if-changed={}", path.display());
|
|
collect(&fs::read_to_string(&path).expect("module lisible"), &mut patterns);
|
|
}
|
|
}
|
|
let list: Vec<String> = patterns.iter().map(|p| format!(" {p:?},")).collect();
|
|
let out = Path::new(&std::env::var("OUT_DIR").unwrap()).join("route_patterns.rs");
|
|
fs::write(
|
|
out,
|
|
format!(
|
|
"pub const ROUTE_PATTERNS: &[&str] = &[\n{}\n];\n",
|
|
list.join("\n")
|
|
),
|
|
)
|
|
.unwrap();
|
|
}
|
|
|
|
/// Motifs littéraux passés à `.route(` ; les jokers et les motifs finissant par « / »
|
|
/// sont laissés de côté
|
|
fn collect(source: &str, patterns: &mut BTreeSet<String>) {
|
|
let mut rest = source;
|
|
while let Some(index) = rest.find(".route(") {
|
|
rest = &rest[index + ".route(".len()..];
|
|
let trimmed = rest.trim_start();
|
|
let Some(literal) = trimmed.strip_prefix('"') else {
|
|
continue;
|
|
};
|
|
let Some(end) = literal.find('"') else {
|
|
continue;
|
|
};
|
|
let pattern = &literal[..end];
|
|
if pattern.starts_with("/api") && !pattern.contains("{*") && !pattern.ends_with('/') {
|
|
patterns.insert(pattern.to_string());
|
|
}
|
|
}
|
|
}
|