Crates.io | validate_directory_structure |
lib.rs | validate_directory_structure |
version | |
source | src |
created_at | 2025-03-26 04:00:17.110462+00 |
updated_at | 2025-03-31 16:41:57.070981+00 |
description | A powerful tool to validate directory(Files and folders) structures. |
homepage | |
repository | https://gitlab.com/public-sources1/validate_directory_structure |
max_upload_size | |
id | 1606130 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
A tool to validate directory structures against a JSON schema. Checks for required folders and files according to the specified configuration.
Validates nested folder structures
Checks for required/optional files
Supports file extensions validation
Detailed error reporting
{
"name": "TEST",
"description": "Structure of folders, folders required and files required",
"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"]
}
]
}
]
}
#[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,
}
# 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);
/ my_project_example
βββ trees field πΉ
β βββ mountain.html πΉ
β βββ mountain.js πΉ
β βββ mountain.css πΉ
β βββ main.js π· // no defined on JSON structure
β βββ sub_forest πΉ
β βββ file_optinal.html πΉ
β βββ file_optinal.js πΉ
β βββ file_optinal.css πΉ
β βββ file_optinal.lock π· // no defined on JSON structure
β βββ file_optinal.ts πΉ
βββ ocean π· // no defined on JSON structure
βββ pacific.html π· // only show message in parent folder
βββ pacific.js π· // only show message in parent folder
Vec<AlertFileStructure>
List of errors