use std::{env, fs, path::Path}; use torn_api_codegen::{model::ResolvedSchema, openapi::schema::OpenApiSchema}; fn main() { let out_dir = env::var_os("OUT_DIR").unwrap(); let model_dest = Path::new(&out_dir).join("models.rs"); let params_dest = Path::new(&out_dir).join("parameters.rs"); let requests_dest = Path::new(&out_dir).join("requests.rs"); let scopes_dest = Path::new(&out_dir).join("scopes.rs"); let s = include_str!("./openapi.json"); let schema: OpenApiSchema = serde_json::from_str(s).unwrap(); let resolved = ResolvedSchema::from_open_api(&schema); let models_file = syn::parse2(resolved.codegen_models()).unwrap(); let models_pretty = prettyplease::unparse(&models_file); fs::write(&model_dest, models_pretty).unwrap(); let params_file = syn::parse2(resolved.codegen_parameters()).unwrap(); let params_pretty = prettyplease::unparse(¶ms_file); fs::write(¶ms_dest, params_pretty).unwrap(); let requests_file = syn::parse2(resolved.codegen_requests()).unwrap(); let requests_pretty = prettyplease::unparse(&requests_file); fs::write(&requests_dest, requests_pretty).unwrap(); let scopes_file = syn::parse2(resolved.codegen_scopes()).unwrap(); let scopes_pretty = prettyplease::unparse(&scopes_file); fs::write(&scopes_dest, scopes_pretty).unwrap(); for warning in resolved.warnings.get_warnings() { println!("cargo:warning={}", warning); } }