kayto 0.1.14

Fast OpenAPI parser that turns imperfect specs into a stable output schema with actionable diagnostics.
use super::Generator;
use crate::parser;
use std::fs;
use std::io;
use std::path::Path;

mod convert;
mod names;
mod prepare_model_data;
mod render;
mod utils;

/// Dart backend entry point.
pub struct DartGenerator;

impl Generator for DartGenerator {
    /// Renders and writes the Dart schema file to disk.
    fn generate(&self, requests: &[parser::Request], output: &Path) -> io::Result<()> {
        let file_content = render::render_schema_file(requests);
        fs::write(output, file_content)
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use std::time::{SystemTime, UNIX_EPOCH};

    /// Verifies Dart generator writes schema content to the requested file.
    #[test]
    fn writes_schema_file() {
        let mut output = std::env::temp_dir();
        let nanos = SystemTime::now()
            .duration_since(UNIX_EPOCH)
            .expect("system time")
            .as_nanos();
        output.push(format!("kayto-dart-{nanos}.dart"));

        DartGenerator
            .generate(&[], &output)
            .expect("dart generation should write file");

        let text = fs::read_to_string(&output).expect("generated file should be readable");
        assert!(text.contains("This file is generated by kayto"));
        let _ = fs::remove_file(output);
    }
}