| Crates.io | dotenv-schema |
| lib.rs | dotenv-schema |
| version | 0.1.1 |
| created_at | 2025-10-18 13:59:19.975507+00 |
| updated_at | 2025-10-18 14:16:33.87508+00 |
| description | A crate to validate .env files against schemas |
| homepage | https://github.com/dotenv-linter/dotenv-linter |
| repository | https://github.com/dotenv-linter/dotenv-linter |
| max_upload_size | |
| id | 1889230 |
| size | 45,043 |
A crate to validate .env files against schemas.
Add dotenv-schema to Cargo.toml:
[dependencies]
dotenv-schema = "0.1"
.env file against schemause dotenv_schema::{DotEnvSchema, ValidateResult};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let dotenv_schema = r#"{
"version": "1.0.0",
"entries": {
"NAME": {
"type": "String"
},
"PORT": {
"type": "Integer"
},
"PRICE": {
"type": "Float"
},
"URL": {
"type": "Url"
},
"EMAIL":{
"type": "Email"
},
"FLAG":{
"type": "Boolean"
}
}
}"#;
let dotenv_schema_filename = ".dotenv_schema.json";
std::fs::write(dotenv_schema_filename, dotenv_schema)?;
let schema = match DotEnvSchema::load(dotenv_schema_filename) {
Ok(schema) => Some(schema),
Err(err) => {
println!("Error loading schema: {err}");
std::process::exit(1);
}
};
let Some(schema) = schema else {
return Err("Error loading .dotenv_schema.json".into());
};
let Some(port) = schema.entries.get("PORT") else {
return Err("Error getting key PORT".into());
};
match port.is_valid("ABCD") {
ValidateResult::Valid => {
println!("PORT is valid");
}
ValidateResult::Invalid(_) => {
println!("PORT is invalid");
}
}
Ok(())
}
Minimum Supported Rust Version: 1.56.1