diff --git a/src/args.rs b/src/args.rs index 69019a8..a070329 100644 --- a/src/args.rs +++ b/src/args.rs @@ -18,7 +18,7 @@ pub struct CLI { #[derive(Subcommand)] pub enum Commands { #[command(about = "Generates smart-contract")] - Contract, + Contract { depth: u8, deposit: u128 }, #[command(about = "Generates circuit")] Circuit, #[command(about = "Generates webapp template")] diff --git a/src/engine/contract.rs b/src/engine/contract.rs index 607348e..681b13f 100644 --- a/src/engine/contract.rs +++ b/src/engine/contract.rs @@ -1,7 +1,14 @@ use fs_extra::dir::{copy, CopyOptions}; -pub fn contract() { +use minijinja::render; + +pub fn contract(depth: u8, deposit: u128) { let options = CopyOptions::new(); copy("./resources/vendor/rln-contract", "./", &options).unwrap(); + + let rln_file = fs_extra::file::read_to_string("./rln-contract/contracts/Rln.sol").unwrap(); + let rln_file = render!(&rln_file, membership_deposit => deposit, depth => depth); + + fs_extra::file::write_all("./rln-contract/contracts/Rln.sol", &rln_file).unwrap(); } diff --git a/src/main.rs b/src/main.rs index a2375ba..af0a836 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,9 +17,8 @@ fn main() { let cli = CLI::parse(); match cli.command { - Commands::Contract => { - println!("Generated smart-contract"); - contract(); + Commands::Contract { depth, deposit } => { + contract(depth, deposit); } Commands::Circuit => println!("circuit"), Commands::Webapp => println!("webapp"),