@@ -8,12 +8,16 @@ use std::{
88
99use ethers:: types:: ValueOrArray ;
1010use regex:: { Captures , Regex } ;
11+ use serde:: { Deserialize , Serialize } ;
1112use tracing:: error;
1213
1314use crate :: {
1415 abi:: ABIItem ,
1516 helpers:: replace_env_variable_to_raw_name,
16- manifest:: core:: { Manifest , ProjectType } ,
17+ manifest:: {
18+ core:: { Manifest , ProjectType } ,
19+ network:: Network ,
20+ } ,
1721 StringOrArray ,
1822} ;
1923
@@ -266,23 +270,31 @@ pub fn read_manifest_raw(file_path: &PathBuf) -> Result<Manifest, ReadManifestEr
266270 }
267271}
268272
273+ #[ derive( Debug , Serialize , Deserialize , Clone ) ]
274+ struct ManifestNetworksOnly {
275+ pub networks : Vec < Network > ,
276+ }
277+
269278pub fn read_manifest ( file_path : & PathBuf ) -> Result < Manifest , ReadManifestError > {
270279 let mut file = File :: open ( file_path) ?;
271280 let mut contents = String :: new ( ) ;
272281
273282 file. read_to_string ( & mut contents) ?;
274283
275- let manifest_before_transform : Manifest = serde_yaml :: from_str ( & contents) ? ;
284+ let contents_before_transform = contents. clone ( ) ;
276285
277286 contents = substitute_env_variables ( & contents) ?;
278287
279288 let mut manifest_after_transform: Manifest = serde_yaml:: from_str ( & contents) ?;
289+ println ! ( "Manifest after transform contents: {:?}" , manifest_after_transform) ;
280290
281291 // as we don't want to inject the RPC URL in rust projects in clear text we should change
282292 // the networks.rpc back to what it was before and the generated code will handle it
283293 if manifest_after_transform. project_type == ProjectType :: Rust {
294+ let manifest_networks_only: ManifestNetworksOnly =
295+ serde_yaml:: from_str ( & contents_before_transform) ?;
284296 for network in & mut manifest_after_transform. networks {
285- network. rpc = manifest_before_transform
297+ network. rpc = manifest_networks_only
286298 . networks
287299 . iter ( )
288300 . find ( |n| n. name == network. name )
0 commit comments