mod builder;
mod error;
pub mod r#gen;
mod lang_bundle;
pub mod lint;
pub mod options;
pub mod typed;
mod utils;
mod validations;
pub use error::BuildError;
pub use options::{BuildOptions, FtlOutputOptions, LintLevel};
use std::process::ExitCode;
pub(crate) use builder::Builder;
pub(crate) use lang_bundle::LangBundle;
pub(crate) use typed::Message;
pub(crate) use utils::LineIndex;
pub(crate) use validations::Analyzed;
#[cfg(feature = "bench-internals")]
pub mod bench_internals {
pub use super::r#gen::generate;
pub use super::lang_bundle::LangBundle;
pub use super::lint::{Lints, check};
pub use super::typed::{Id, Message};
pub use super::validations::Analyzed;
}
pub fn build_from_locales_folder(options: BuildOptions) -> ExitCode {
match try_build_from_locales_folder(options) {
Ok(_) => ExitCode::SUCCESS,
Err(e) => {
eprintln!("{}", e);
ExitCode::FAILURE
}
}
}
pub fn try_build_from_locales_folder(options: BuildOptions) -> Result<(), BuildError> {
let locales = &options.locales_folder;
println!("cargo::rerun-if-changed={locales}");
Builder::load(options)?.generate()
}