mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 20:29:23 +00:00
Remove artifacts for serai-processor-ethereum-contracts
This commit is contained in:
@@ -1,8 +1,69 @@
|
||||
fn main() {
|
||||
build_solidity_contracts::build(
|
||||
&["../../../networks/ethereum/schnorr/contracts"],
|
||||
"contracts",
|
||||
"artifacts",
|
||||
use std::{env, fs};
|
||||
|
||||
use alloy_sol_macro_input::{SolInputKind, SolInput};
|
||||
|
||||
fn write(sol: syn_solidity::File, file: &str) {
|
||||
let sol = alloy_sol_macro_expander::expand::expand(sol).unwrap();
|
||||
fs::write(
|
||||
file,
|
||||
// TODO: Replace `prettyplease::unparse` with `to_string`
|
||||
prettyplease::unparse(&syn::File {
|
||||
attrs: vec![],
|
||||
items: vec![syn::parse2(sol).unwrap()],
|
||||
shebang: None,
|
||||
})
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
fn sol(sol: &str, file: &str) {
|
||||
let alloy_sol_macro_input::SolInputKind::Sol(sol) =
|
||||
syn::parse_str(&std::fs::read_to_string(sol).unwrap()).unwrap()
|
||||
else {
|
||||
panic!("parsed .sol file wasn't SolInputKind::Sol");
|
||||
};
|
||||
write(sol, file);
|
||||
}
|
||||
|
||||
fn abi(ident: &str, abi: &str, file: &str) {
|
||||
let SolInputKind::Sol(sol) = (SolInput {
|
||||
attrs: vec![],
|
||||
path: None,
|
||||
kind: SolInputKind::Json(
|
||||
syn::parse_str(ident).unwrap(),
|
||||
serde_json::from_str(&fs::read_to_string(abi).unwrap()).unwrap(),
|
||||
),
|
||||
})
|
||||
.normalize_json()
|
||||
.unwrap()
|
||||
.kind
|
||||
else {
|
||||
panic!("normalized JSON wasn't SolInputKind::Sol");
|
||||
};
|
||||
write(sol, file);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let artifacts_path =
|
||||
env::var("OUT_DIR").unwrap().to_string() + "/serai-processor-ethereum-contracts";
|
||||
build_solidity_contracts::build(
|
||||
&["../../../networks/ethereum/schnorr/contracts"],
|
||||
"contracts",
|
||||
&artifacts_path,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// TODO: Use OUT_DIR for the generated code
|
||||
if !fs::exists("src/abigen").unwrap() {
|
||||
fs::create_dir("src/abigen").unwrap();
|
||||
}
|
||||
|
||||
// These can be handled with the sol! macro
|
||||
sol("contracts/IERC20.sol", "src/abigen/erc20.rs");
|
||||
sol("contracts/Deployer.sol", "src/abigen/deployer.rs");
|
||||
// This cannot be handled with the sol! macro. The Solidity requires an import, the ABI is built
|
||||
// to OUT_DIR and the macro doesn't support non-static paths:
|
||||
// https://github.com/alloy-rs/core/issues/738
|
||||
abi("Router", &(artifacts_path.clone() + "/Router.abi"), "src/abigen/router.rs");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user