Unverified Commit 8ef6063d authored by Nugine's avatar Nugine
Browse files

codegen: buffer io

parent 5f4aea6d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
use std::fs::File;
use std::io;
use std::io::BufWriter;
use std::io::Write;

pub struct Codegen {
@@ -10,6 +13,11 @@ impl Codegen {
            writer: Box::new(writer),
        }
    }

    pub fn create_file(path: &str) -> io::Result<Self> {
        let file = File::create(path)?;
        Ok(Self::new(BufWriter::with_capacity(1024 * 1024, file)))
    }
}

impl Codegen {
+6 −8
Original line number Diff line number Diff line
@@ -17,8 +17,6 @@ mod ops;
use crate::gen::Codegen;

use std::format as f;
use std::fs::File;
use std::io::{BufReader, BufWriter};

fn o<T: ToOwned + ?Sized>(x: &T) -> T::Owned {
    x.to_owned()
@@ -31,8 +29,8 @@ fn default<T: Default>() -> T {
fn main() {
    let model: smithy::Model = {
        let json_path = std::env::args().nth(1).unwrap();
        let json_file = BufReader::new(File::open(json_path).unwrap());
        serde_json::from_reader(json_file).unwrap()
        let json_file = std::fs::read(json_path).unwrap();
        serde_json::from_slice(&json_file).unwrap()
    };
    assert!(model.smithy == "2.0");

@@ -41,25 +39,25 @@ fn main() {

    {
        let path = "crates/s3s/src/dto/generated.rs";
        let mut gen = Codegen::new(BufWriter::new(File::create(path).unwrap()));
        let mut gen = Codegen::create_file(path).unwrap();
        dto::codegen(&rust_types, &ops, &mut gen);
    }

    {
        let path = "crates/s3s/src/header/names.rs";
        let mut gen = Codegen::new(BufWriter::new(File::create(path).unwrap()));
        let mut gen = Codegen::create_file(path).unwrap();
        headers::codegen(&model, &mut gen);
    }

    {
        let path = "crates/s3s/src/error/generated.rs";
        let mut gen = Codegen::new(BufWriter::new(File::create(path).unwrap()));
        let mut gen = Codegen::create_file(path).unwrap();
        error::codegen(&model, &mut gen);
    }

    {
        let path = "crates/s3s/src/ops/generated.rs";
        let mut gen = Codegen::new(BufWriter::new(File::create(path).unwrap()));
        let mut gen = Codegen::create_file(path).unwrap();
        ops::codegen(&ops, &rust_types, &mut gen);
    }
}