From ee6bc08d8035e2e53a7456404a566eda30db7588 Mon Sep 17 00:00:00 2001 From: Chen Wen Kang <23054115+cwkang1998@users.noreply.github.com> Date: Fri, 17 May 2024 12:15:36 +0800 Subject: [PATCH] feat: add contract file awareness (#21) This PR additionally adds the currently verified contract file as a parameter to send to the backend --- crates/cli/Cargo.toml | 2 +- crates/cli/src/api.rs | 5 +++-- crates/cli/src/verify.rs | 10 +++++++++- crates/voyager-resolver-cairo/Cargo.toml | 4 ++-- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 7331025..c29cd3d 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -14,7 +14,7 @@ serde.workspace = true smol_str.workspace = true thiserror.workspace = true toml.workspace = true -reqwest = { version = "0.11", features = ["blocking", "json", "multipart"] } +reqwest = { version = "=0.11", features = ["blocking", "json", "multipart"] } tokio = { version = "1.28.2", features = ["full"] } url = "2.2.2" dialoguer = { version = "0.10.4", features = ["fuzzy-select"] } diff --git a/crates/cli/src/api.rs b/crates/cli/src/api.rs index 2c41fa9..5713bce 100644 --- a/crates/cli/src/api.rs +++ b/crates/cli/src/api.rs @@ -200,7 +200,7 @@ pub struct VerificationJob { created_timestamp: Option, updated_timestamp: Option, address: Option, - contract_name: Option, + contract_file: Option, name: Option, version: Option, license: Option, @@ -246,6 +246,7 @@ pub struct ProjectMetadataInfo { pub cairo_version: SupportedCairoVersions, pub scarb_version: SupportedScarbVersions, pub project_dir_path: String, + pub contract_file: String, } pub fn dispatch_class_verification_job( @@ -269,7 +270,7 @@ pub fn dispatch_class_verification_job( .text("license", license.to_string()) .text("account_contract", is_account.to_string()) .text("name", name.to_string()) - .text("contract_name", address.to_string()) + .text("contract_file", project_metadata.contract_file) .text("project_dir_path", project_metadata.project_dir_path); for file in files.iter() { diff --git a/crates/cli/src/verify.rs b/crates/cli/src/verify.rs index c457791..261e3ea 100644 --- a/crates/cli/src/verify.rs +++ b/crates/cli/src/verify.rs @@ -164,7 +164,7 @@ pub fn verify_project( // The compiler compiles into the original scarb package name // As such we have to craft the correct path to the main package - let project_dir_path = extracted_files_dir.join(scarb_metadata_package_name); + let project_dir_path = extracted_files_dir.join(scarb_metadata_package_name.clone()); let project_dir_path = project_dir_path .strip_prefix(extracted_files_dir.clone()) .unwrap(); @@ -203,6 +203,13 @@ pub fn verify_project( }) .collect::>(); + // We already know the contract file specified in Scarb.toml is relative to src/ + let contract_file = format!( + "{}/src/{}", + scarb_metadata_package_name.clone(), + contract_paths[0].as_str() + ); + let dispatch_response = dispatch_class_verification_job( args.api_key.as_str(), network_enum.clone(), @@ -213,6 +220,7 @@ pub fn verify_project( ProjectMetadataInfo { cairo_version, scarb_version, + contract_file, project_dir_path: project_dir_path.as_str().to_owned(), }, project_files, diff --git a/crates/voyager-resolver-cairo/Cargo.toml b/crates/voyager-resolver-cairo/Cargo.toml index 11b93cc..2494bfc 100644 --- a/crates/voyager-resolver-cairo/Cargo.toml +++ b/crates/voyager-resolver-cairo/Cargo.toml @@ -43,8 +43,8 @@ cairo-lang-sierra-generator = "=2.4.3" cairo-lang-starknet = "=2.4.3" cairo-lang-syntax = "=2.4.3" cairo-lang-utils = "=2.4.3" -scarb = { git = "https://github.com/software-mansion/scarb", version = "2.4.3", rev = "5dbab1f" } -scarb-ui = { git = "https://github.com/software-mansion/scarb", version = "0.1.2", rev = "5dbab1f" } +scarb = { git = "https://github.com/software-mansion/scarb", version = "=2.4.3", rev = "5dbab1f" } +scarb-ui = { git = "https://github.com/software-mansion/scarb", version = "=0.1.2", rev = "5dbab1f" } [dev-dependencies] env_logger.workspace = true