MCPcopy Create free account
hub / github.com/cowprotocol/services / write_crate

Method write_crate

contracts/src/codegen.rs:349–371  ·  view source on GitHub ↗

Write a per-contract crate to the contracts-generated directory.

(&self, artifacts_dir: &Path, contracts_generated_dir: &Path)

Source from the content-addressed store, hash-verified

347
348 /// Write a per-contract crate to the contracts-generated directory.
349 fn write_crate(&self, artifacts_dir: &Path, contracts_generated_dir: &Path) -> Result<()> {
350 let crate_name = to_crate_name(&self.name);
351 let dir_name = to_dir_name(&self.name);
352 let crate_dir = contracts_generated_dir.join(&dir_name);
353 let src_dir = crate_dir.join("src");
354 std::fs::create_dir_all(&src_dir)?;
355
356 // Generate Cargo.toml
357 let cargo_toml = CARGO_TOML_TEMPLATE.replace("{crate_name}", &crate_name);
358 std::fs::write(crate_dir.join("Cargo.toml"), cargo_toml)?;
359
360 // Generate lib.rs
361 let token_stream = self.generate_code(artifacts_dir)?;
362 let mut buffer = String::from(LIB_HEADER);
363 write!(buffer, "{}", token_stream)?;
364 let file: syn::File = syn::parse_file(&buffer)
365 .with_context(|| format!("parsing generated code for {}", self.name))?;
366 let formatted = prettyplease::unparse(&file);
367 std::fs::write(src_dir.join("lib.rs"), formatted)?;
368
369 eprintln!(" generated crate: {crate_name} (contracts-generated/{dir_name})");
370 Ok(())
371 }
372}
373
374fn generate_binding(instance: &mut SolMacroGen, all_derives: bool) -> Result<()> {

Callers 1

generateMethod · 0.80

Calls 3

to_crate_nameFunction · 0.85
to_dir_nameFunction · 0.85
generate_codeMethod · 0.80

Tested by

no test coverage detected