Преглед изворни кода

add --skip-build option for verify command (#2387)

nojob1 пре 2 година
родитељ
комит
5099044bf4
2 измењених фајлова са 26 додато и 16 уклоњено
  1. 1 0
      CHANGELOG.md
  2. 25 16
      cli/src/lib.rs

+ 1 - 0
CHANGELOG.md

@@ -17,6 +17,7 @@ The minor version will be incremented upon a breaking change and the patch versi
 - cli: Add `idl close` command to close a program's IDL account ([#2329](https://github.com/coral-xyz/anchor/pull/2329)).
 - cli: `idl init` now supports very large IDL files ([#2329](https://github.com/coral-xyz/anchor/pull/2329)).
 - spl: Add `transfer_checked` function ([#2353](https://github.com/coral-xyz/anchor/pull/2353)).
+- cli: Add `--skip-build` option to the verify command ([#2387](https://github.com/coral-xyz/anchor/pull/2387)).
 - client: Add support for multithreading to the rust client: use flag `--multithreaded` ([#2321](https://github.com/coral-xyz/anchor/pull/2321)).
 - client: Add `async_rpc` a method which returns a nonblocking solana rpc client ([2322](https://github.com/coral-xyz/anchor/pull/2322)).
 

+ 25 - 16
cli/src/lib.rs

@@ -150,6 +150,10 @@ pub enum Command {
         /// Arguments to pass to the underlying `cargo build-bpf` command.
         #[clap(required = false, last = true)]
         cargo_args: Vec<String>,
+        /// Flag to skip building the program in the workspace,
+        /// use this to save time when running verify and the program code is already built.
+        #[clap(long, required = false)]
+        skip_build: bool,
     },
     #[clap(name = "test", alias = "t")]
     /// Runs integration tests against a localnetwork.
@@ -432,6 +436,7 @@ pub fn entry(opts: Opts) -> Result<()> {
             bootstrap,
             env,
             cargo_args,
+            skip_build,
         } => verify(
             &opts.cfg_override,
             program_id,
@@ -441,6 +446,7 @@ pub fn entry(opts: Opts) -> Result<()> {
             bootstrap,
             env,
             cargo_args,
+            skip_build,
         ),
         Command::Clean => clean(&opts.cfg_override),
         Command::Deploy {
@@ -1349,6 +1355,7 @@ fn verify(
     bootstrap: BootstrapMode,
     env_vars: Vec<String>,
     cargo_args: Vec<String>,
+    skip_build: bool,
 ) -> Result<()> {
     // Change to the workspace member directory, if needed.
     if let Some(program_name) = program_name.as_ref() {
@@ -1361,22 +1368,24 @@ fn verify(
 
     // Build the program we want to verify.
     let cur_dir = std::env::current_dir()?;
-    build(
-        cfg_override,
-        None,                                                  // idl
-        None,                                                  // idl ts
-        true,                                                  // verifiable
-        true,                                                  // skip lint
-        None,                                                  // program name
-        solana_version.or_else(|| cfg.solana_version.clone()), // solana version
-        docker_image,                                          // docker image
-        bootstrap,                                             // bootstrap docker image
-        None,                                                  // stdout
-        None,                                                  // stderr
-        env_vars,
-        cargo_args,
-        false,
-    )?;
+    if !skip_build {
+        build(
+            cfg_override,
+            None,                                                  // idl
+            None,                                                  // idl ts
+            true,                                                  // verifiable
+            true,                                                  // skip lint
+            None,                                                  // program name
+            solana_version.or_else(|| cfg.solana_version.clone()), // solana version
+            docker_image,                                          // docker image
+            bootstrap,                                             // bootstrap docker image
+            None,                                                  // stdout
+            None,                                                  // stderr
+            env_vars,
+            cargo_args,
+            false,
+        )?;
+    }
     std::env::set_current_dir(cur_dir)?;
 
     // Verify binary.