Skip to content

Commit 84c7b5e

Browse files
committed
Metadata refactor
1 parent 2a1f07c commit 84c7b5e

File tree

7 files changed

+42
-38
lines changed

7 files changed

+42
-38
lines changed

crates/cheatnet/tests/common/mod.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@ use conversions::string::TryFromHexStr;
2727
use foundry_ui::UI;
2828
use runtime::starknet::constants::TEST_ADDRESS;
2929
use runtime::starknet::context::build_context;
30-
use scarb_api::metadata::MetadataCommandExt;
30+
use scarb_api::metadata::get_metadata_for_dir;
3131
use scarb_api::{
32-
CompilationOpts, ScarbCommand, get_contracts_artifacts_and_source_sierra_paths,
33-
target_dir_for_workspace,
32+
CompilationOpts, get_contracts_artifacts_and_source_sierra_paths, target_dir_for_workspace,
3433
};
3534
use starknet::core::utils::get_selector_from_name;
3635
use starknet_api::contract_class::EntryPointType;
@@ -76,11 +75,7 @@ pub fn recover_data(output: CallResult) -> Vec<Felt> {
7675
}
7776

7877
pub fn get_contracts() -> ContractsData {
79-
let scarb_metadata = ScarbCommand::metadata()
80-
.inherit_stderr()
81-
.manifest_path("tests/contracts/Scarb.toml")
82-
.run()
83-
.unwrap();
78+
let scarb_metadata = get_metadata_for_dir("tests/contracts").unwrap();
8479
let target_dir = target_dir_for_workspace(&scarb_metadata).join("dev");
8580

8681
let package = scarb_metadata.packages.first().unwrap();

crates/forge/src/clean.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::{CleanArgs, CleanComponent};
22
use anyhow::{Context, Result, ensure};
33
use camino::Utf8PathBuf;
44
use foundry_ui::UI;
5-
use scarb_api::{ScarbCommand, metadata::MetadataCommandExt};
5+
use scarb_api::metadata::get_metadata;
66
use std::fs;
77

88
const COVERAGE_DIR: &str = "coverage";
@@ -26,7 +26,7 @@ pub fn clean(args: CleanArgs, ui: &UI) -> Result<()> {
2626
args.clean_components
2727
};
2828

29-
let scarb_metadata = ScarbCommand::metadata().inherit_stderr().no_deps().run()?;
29+
let scarb_metadata = get_metadata()?;
3030
let workspace_root = scarb_metadata.workspace.root;
3131

3232
let packages_root: Vec<Utf8PathBuf> = scarb_metadata

crates/forge/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ use forge_runner::forge_config::ForgeTrackedResource;
99
use foundry_ui::components::warning::WarningMessage;
1010
use foundry_ui::{Message, UI};
1111
use run_tests::workspace::run_for_workspace;
12-
use scarb_api::{ScarbCommand, metadata::MetadataCommandExt};
12+
use scarb_api::ScarbCommand;
13+
use scarb_api::metadata::get_metadata;
1314
use scarb_ui::args::{FeaturesSpec, PackagesFilter, ProfileSpec};
1415
use semver::Version;
1516
use shared::auto_completions::{Completions, generate_completions};
@@ -298,7 +299,7 @@ pub fn main_execution(ui: Arc<UI>) -> Result<ExitStatus> {
298299
}
299300
ForgeSubcommand::CleanCache {} => {
300301
ui.println(&WarningMessage::new("`snforge clean-cache` is deprecated and will be removed in the future. Use `snforge clean cache` instead"));
301-
let scarb_metadata = ScarbCommand::metadata().inherit_stderr().run()?;
302+
let scarb_metadata = get_metadata()?;
302303
let cache_dir = scarb_metadata.workspace.root.join(CACHE_DIR);
303304

304305
if cache_dir.exists() {

crates/forge/src/run_tests/workspace.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ use scarb_api::{
2222
metadata::{Metadata, MetadataCommandExt, PackageMetadata},
2323
target_dir_for_workspace,
2424
};
25+
use scarb_metadata::MetadataCommand;
2526
use scarb_ui::args::PackagesFilter;
2627
use shared::consts::SNFORGE_TEST_FILTER;
2728
use std::env;
@@ -37,7 +38,7 @@ pub async fn run_for_workspace(args: TestArgs, ui: Arc<UI>) -> Result<ExitStatus
3738
ColorOption::Auto => (),
3839
}
3940

40-
let mut metadata_command = ScarbCommand::metadata();
41+
let mut metadata_command = MetadataCommand::new();
4142
if let Some(profile) = &args.scarb_args.profile.specified() {
4243
metadata_command.profile(profile.clone());
4344
}

crates/scarb-api/src/lib.rs

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ pub fn test_targets_by_name(package: &PackageMetadata) -> HashMap<String, &Targe
221221
#[cfg(test)]
222222
mod tests {
223223
use super::*;
224-
use crate::metadata::MetadataCommandExt;
224+
use crate::metadata::get_metadata_for_dir;
225225
use assert_fs::TempDir;
226226
use assert_fs::fixture::{FileWriteStr, PathChild, PathCopy};
227227
use camino::Utf8PathBuf;
@@ -324,10 +324,7 @@ mod tests {
324324
.run()
325325
.unwrap();
326326

327-
let metadata = ScarbCommand::metadata()
328-
.current_dir(temp.path())
329-
.run()
330-
.unwrap();
327+
let metadata = get_metadata_for_dir(temp.path()).unwrap();
331328

332329
let package = metadata
333330
.packages
@@ -378,10 +375,7 @@ mod tests {
378375
.run()
379376
.unwrap();
380377

381-
let metadata = ScarbCommand::metadata()
382-
.current_dir(temp.path())
383-
.run()
384-
.unwrap();
378+
let metadata = get_metadata_for_dir(temp.path()).unwrap();
385379

386380
let package = metadata
387381
.packages
@@ -436,11 +430,7 @@ mod tests {
436430
))
437431
.unwrap();
438432

439-
let scarb_metadata = ScarbCommand::metadata()
440-
.inherit_stderr()
441-
.current_dir(temp.path())
442-
.run()
443-
.unwrap();
433+
let scarb_metadata = get_metadata_for_dir(temp.path()).unwrap();
444434

445435
assert!(
446436
package_matches_version_requirement(
@@ -580,11 +570,7 @@ mod tests {
580570
.run()
581571
.unwrap();
582572

583-
let metadata = ScarbCommand::metadata()
584-
.inherit_stderr()
585-
.manifest_path(temp.join("Scarb.toml"))
586-
.run()
587-
.unwrap();
573+
let metadata = get_metadata_for_dir(temp.path()).unwrap();
588574

589575
let target_dir = target_dir_for_workspace(&metadata).join("dev");
590576
let package = metadata.packages.first().unwrap();
@@ -623,11 +609,7 @@ mod tests {
623609
#[test]
624610
fn get_name_for_package() {
625611
let temp = setup_package("basic_package");
626-
let scarb_metadata = ScarbCommand::metadata()
627-
.inherit_stderr()
628-
.current_dir(temp.path())
629-
.run()
630-
.unwrap();
612+
let scarb_metadata = get_metadata_for_dir(temp.path()).unwrap();
631613

632614
let package_name =
633615
name_for_package(&scarb_metadata, &scarb_metadata.workspace.members[0]).unwrap();

crates/scarb-api/src/metadata.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use anyhow::{Context, Result};
22
pub use scarb_metadata::{Metadata, MetadataCommand, MetadataCommandError, PackageMetadata};
3+
use std::path::PathBuf;
34

45
pub trait MetadataCommandExt {
56
fn run(&mut self) -> Result<Metadata>;
@@ -12,3 +13,24 @@ impl MetadataCommandExt for MetadataCommand {
1213
.context("error: could not gather project metadata from Scarb due to previous error")
1314
}
1415
}
16+
17+
pub fn get_metadata_for_dir(dir: impl Into<PathBuf>) -> Result<Metadata> {
18+
get_metadata_inner(Some(dir))
19+
}
20+
21+
pub fn get_metadata() -> Result<Metadata> {
22+
get_metadata_inner(None::<PathBuf>)
23+
}
24+
25+
fn get_metadata_inner(current_dir: Option<impl Into<PathBuf>>) -> Result<Metadata> {
26+
let mut command = MetadataCommand::new();
27+
if let Some(dir) = current_dir {
28+
command.current_dir(dir);
29+
}
30+
31+
command
32+
.inherit_stderr()
33+
.inherit_stdout()
34+
.exec()
35+
.context("error: could not gather project metadata from Scarb due to previous error")
36+
}

crates/sncast/src/helpers/scarb_utils.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ fn get_scarb_metadata_command(manifest_path: &Utf8PathBuf) -> Result<MetadataCom
4141
ScarbCommand::new().ensure_available()?;
4242

4343
let mut command = ScarbCommand::metadata();
44-
command.inherit_stderr().manifest_path(manifest_path);
44+
command
45+
.inherit_stderr()
46+
.manifest_path(manifest_path)
47+
.no_deps();
4548
Ok(command)
4649
}
4750

0 commit comments

Comments
 (0)