#![cfg_attr(target_os = "emscripten", feature(let_chains))]
#![allow(clippy::collapsible_if)]
mod manifest;
mod validation;
pub use manifest::*;
pub use validation::{ManifestIssue, ValidationError};
pub const CRATE_VERSION: &str = env!("CARGO_PKG_VERSION");
pub fn schema_json() -> &'static str {
include_str!("../schema/fio-0.3.json")
}
pub fn generate_schema_json_pretty() -> String {
use schemars::generate::SchemaSettings;
let settings = SchemaSettings::draft2019_09();
let generator = settings.into_generator();
let root = generator.into_root_schema_for::<Manifest>();
serde_json::to_string_pretty(&root).expect("RootSchema should serialize to JSON")
}
pub fn generate_schema_value() -> serde_json::Value {
serde_json::from_str(&generate_schema_json_pretty()).expect("RootSchema JSON should be valid")
}
pub fn load_manifest_from_reader<R: std::io::Read>(
reader: R,
) -> Result<Manifest, serde_yaml::Error> {
Manifest::from_yaml_reader(reader)
}
pub fn load_manifest_from_str(yaml: &str) -> Result<Manifest, serde_yaml::Error> {
Manifest::from_yaml_str(yaml)
}
pub fn manifest_to_yaml(manifest: &Manifest) -> Result<String, serde_yaml::Error> {
manifest.to_yaml()
}