validate_directory_structure 0.1.2

A powerful tool to validate directory(Files and folders) structures.
validate_directory_structure-0.1.2 is not a library.
Visit the last successful build: validate_directory_structure-0.2.4

This is a validator of directories, it validates if exist folders or files according to JSON structure.

Example JSON structure

{
  "name": "Name of this structure",
  "description": "Short descript about this structure",
  "folders": [
    {
      "required": true,
      "names": ["foo", "FOO", "Fo o"],
      "files": [
        {
          "required": true,
          "names": ["bar", "baar"]
        },
        {
          "required": true,
          "names": ["aaaa"]
        }
      ],
      "folders": [
        {
          "required": false,
          "names": ["sub_folder"],
          "files": [
            {
              "required": true,
              "names": ["file_sub_file"]
            }
          ],
          "folders": [
            {
              "required": false,
              "names": ["sub sub folder"],
              "files": [
								{
									"required": true,
									"names": ["bbbbb", "bb bb"]
								}
							]
            }
          ]
        }
      ]
    },
    {
      "required": true,
      "names": ["folder 2", "folder2"],
      "files": [
        {
          "required": true,
          "names": ["file1", "file 1"]
        }
      ]
    }
  ]
}

Significant typing

#[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,
}

Example to use:

    let results = validate_structure(
        "/home/sonickseven/test",
        JSON_STR,
        &vec![".txt", ".rs"], // Minimum required extensions can be one or multiple
        &vec![".txt", ".md", ".rs"], // Valid/extensions allowed during validation
    );

    println!("these are the results: {:?}", results);