Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
1 result

readme_es.md

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

Sample Output Vec<AlertFileStructure>

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