Select Git revision
-
sonickseven authoredsonickseven authored
readme_es.md 4.06 KiB
Index
Validador de Estructura de Directorios
Herramienta para validar estructuras de directorios contra un esquema JSON. Verifica carpetas y archivos requeridos.
Características
-
Valida estructuras anidadas
-
Verifica archivos obligatorios/opcionales
-
Soporta validación de extensiones
-
Reporte detallado de errores
Ejemplo de estructura JSON
{
"name": "Prueba",
"description": "Estructurea de directorio, archivos y carpetas requeridos u opcionales",
"folders": [
{
"required": true,
"names": ["forest", "trees field"],
"files": [
{
"required": true,
"names": ["mountain", "hill"]
}
],
"folders": [
{
"names": ["sub_forest", "sub forest"],
"required": true,
"files": [
{
"names": ["file_sub_forest", "sub forest"],
"required": true
},
{
"names": ["file_optinal"],
"required": false
}
]
}
]
},
{
"required": false,
"names": ["rivers"],
"files": [
{
"required": true,
"names": ["aaaa", "bbbbb"]
}
]
}
]
}
Tipado relevante
#[derive(Debug, Serialize)]
pub enum ItemType {
File,
Folder,
}
#[derive(Debug, Serialize)]
pub enum AlertType {
Warning, // --> Works only for property "required" false in JSON
MissingItem,
ExtraItem,
ErrorReadingFile,
}
#[derive(Debug, Serialize)]
pub struct AlertFileStructure {
pub path: String,
pub item_type: ItemType,
pub alert_type: AlertType,
}
Uso:
# Cargo.toml
[dependencies]
validate_directory_structure = "0.2.3"
use validate_directory_structure::ValidateDirTree;
let validate_structure = ValidateDirTree {
required_extensions: vec!["html", "css", "js"], // extensions of files mandatory
valid_extensions: vec!["ts", "tsx"], // These extensions aren't mandatory on folder
};
let results = validate_structure.validate_structure("/your/folder/path", YOUR_JSON_STRUCTUEE);
println!("these are the results: {:?}", results);
Direct my_project_example
/ my_project_example
├── trees field 🗹
│ ├── mountain.html 🗹
│ ├── mountain.js 🗹
│ ├── mountain.css 🗹
│ ├── main.js 🗷 // no definido en la estructura JSON
│ └── sub_forest 🗹
│ ├── file_optinal.html 🗹
│ ├── file_optinal.js 🗹
│ ├── file_optinal.css 🗹
│ └── file_optinal.lock 🗷 // no definido en la estructura JSON
│ └── file_optinal.ts 🗹
└── ocean 🗷 // no definido en la estructura JSON
├── pacific.html 🗷 // Solo muestra error en la carpeta padre
└── pacific.js 🗷 // Solo muestra error en la carpeta padre
Vec<AlertFileStructure>
Sample Output Lista de errores
- Error - > File "/trees field/main.js" es un ExtraFile porque no fue definido en la estructura JSON
- Error - > File "/trees field/sub_forest/file_sub_forest.js" es un MissingFile porque fue definido en el JSON
- Error - > File "/trees field/sub_forest/file_sub_forest.css" es un MissingFile porque fue definido en el JSON
- Error - > File "/trees field/sub_forest/file_sub_forest.html" es un MissingFile porque fue definido en el JSON
- Error - > File "/trees field/sub_forest/file_optinal.lock" es un ExtraFile porque no fue defino en el JSON
- Warning - > Folder "/rivers" fue definido pero no es obligatorio que exista ExtraFile
- Error - > Folder "/ocean" es un ExtraFile porque no fue definido en el JSON