pub mod ast;
pub mod error;
pub mod parser;
pub mod validator;
pub mod writer;
pub use ast::{named_conf, zone_file};
pub use error::{Error, Result, Severity, ValidationError};
#[allow(clippy::result_large_err)]
pub fn parse_named_conf(input: &str) -> Result<ast::named_conf::NamedConf> {
parser::parse_named_conf(input).map_err(|msg| Error::Parse {
file: "<input>".into(),
message: msg.clone(),
src: miette::NamedSource::new("<input>", input.to_owned()),
span: (0, 0).into(),
})
}
#[allow(clippy::result_large_err)]
pub fn parse_named_conf_file(path: &std::path::Path) -> Result<ast::named_conf::NamedConf> {
let input = std::fs::read_to_string(path)?;
parser::parse_named_conf(&input).map_err(|msg| Error::Parse {
file: path.display().to_string(),
message: msg.clone(),
src: miette::NamedSource::new(path.display().to_string(), input),
span: (0, 0).into(),
})
}
#[allow(clippy::result_large_err)]
pub fn parse_zone_file(input: &str) -> Result<ast::zone_file::ZoneFile> {
parser::parse_zone_file(input).map_err(|msg| Error::Parse {
file: "<input>".into(),
message: msg.clone(),
src: miette::NamedSource::new("<input>", input.to_owned()),
span: (0, 0).into(),
})
}
#[allow(clippy::result_large_err)]
pub fn parse_zone_file_from_path(path: &std::path::Path) -> Result<ast::zone_file::ZoneFile> {
let input = std::fs::read_to_string(path)?;
parser::parse_zone_file(&input).map_err(|msg| Error::Parse {
file: path.display().to_string(),
message: msg.clone(),
src: miette::NamedSource::new(path.display().to_string(), input),
span: (0, 0).into(),
})
}
#[must_use]
pub fn write_named_conf(conf: &ast::named_conf::NamedConf, opts: &writer::WriteOptions) -> String {
writer::write_named_conf(conf, opts)
}
#[must_use]
pub fn write_zone_file(zone: &ast::zone_file::ZoneFile, opts: &writer::WriteOptions) -> String {
writer::write_zone_file(zone, opts)
}
#[must_use]
pub fn validate_named_conf(conf: &ast::named_conf::NamedConf) -> Vec<ValidationError> {
validator::validate_named_conf(conf)
}
#[must_use]
pub fn validate_zone_file(zone: &ast::zone_file::ZoneFile) -> Vec<ValidationError> {
validator::validate_zone_file(zone)
}