oas3-gen 0.23.1

A rust type generator for OpenAPI v3.1.x specification.
use quote::quote;
use syn::Ident;

use super::{Visibility, metadata::CodeMetadata};
use crate::generator::ast::LintConfig;

pub struct ModFileGenerator<'a> {
  metadata: &'a CodeMetadata,
  client_ident: &'a Ident,
  visibility: Visibility,
}

impl<'a> ModFileGenerator<'a> {
  pub fn new(metadata: &'a CodeMetadata, client_ident: &'a Ident, visibility: Visibility) -> Self {
    Self {
      metadata,
      client_ident,
      visibility,
    }
  }

  pub fn generate(&self, source_path: &str, gen_version: &str) -> anyhow::Result<String> {
    let vis = self.visibility.to_tokens();
    let client_ident = self.client_ident;

    let code = quote! {
      mod types;
      mod client;

      #vis use types::*;
      #vis use client::#client_ident;
    };

    let lint_config = LintConfig::default();
    super::generate_source(&code, self.metadata, Some(&lint_config), source_path, gen_version)
  }
}