Skip to content

Commit b18bb7c

Browse files
committed
Fix arg parsing
1 parent 7d40c9b commit b18bb7c

File tree

4 files changed

+25
-11
lines changed

4 files changed

+25
-11
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "cargo-wsdeps"
33
description = "Cargo subcommand to manage dependencies in a workspace."
4-
version = "0.1.0"
4+
version = "0.1.1"
55
repository = "https://github.com/ecliptical/cargo-wsdeps"
66
edition = "2024"
77
authors = ["Peter Nehrer <pnehrer@eclipticalsoftware.com>"]

src/main.rs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,17 @@ use jemallocator::Jemalloc;
99
#[global_allocator]
1010
static GLOBAL: Jemalloc = Jemalloc;
1111

12-
/// Manage Cargo workspace dependencies.
13-
#[derive(Debug, Parser)]
12+
#[derive(Parser)]
13+
#[command(name = "cargo")]
1414
#[command(bin_name = "cargo")]
15-
struct Cli {
15+
#[command(styles = clap_cargo::style::CLAP_STYLING)]
16+
enum CargoCli {
17+
Wsdeps(WsDepsArgs),
18+
}
19+
20+
#[derive(clap::Args)]
21+
#[command(version, about, long_about = None)]
22+
struct WsDepsArgs {
1623
#[command(flatten)]
1724
manifest: clap_cargo::Manifest,
1825
#[command(flatten)]
@@ -36,20 +43,20 @@ enum Commands {
3643
}
3744

3845
fn main() -> anyhow::Result<()> {
39-
let cli = Cli::parse();
40-
let mut metadata = cli.manifest.metadata();
41-
cli.features.forward_metadata(&mut metadata);
46+
let CargoCli::Wsdeps(args) = CargoCli::parse();
47+
let mut metadata = args.manifest.metadata();
48+
args.features.forward_metadata(&mut metadata);
4249
let metadata = metadata.exec()?;
4350
let manifest = Manifest::from_path(metadata.workspace_root.join("Cargo.toml"))?;
4451
let Some(ref workspace) = manifest.workspace else {
4552
return Ok(());
4653
};
4754

48-
let (selected, _) = cli.workspace.partition_packages(&metadata);
55+
let (selected, _) = args.workspace.partition_packages(&metadata);
4956

5057
let (add, remove) = partition_dependencies(workspace, &selected)?;
5158

52-
match cli.cmd {
59+
match args.cmd {
5360
Commands::Show => {
5461
print_changes(&add, &remove);
5562
}

tests/diff.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ use std::path::Path;
88
fn diff_empty_workspace() -> Result<()> {
99
let dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("test-resources/empty-workspace");
1010
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME"))?;
11-
cmd.current_dir(&dir).arg("diff").assert().failure();
11+
cmd.current_dir(&dir)
12+
.arg("wsdeps")
13+
.arg("diff")
14+
.assert()
15+
.failure();
1216

1317
Ok(())
1418
}
@@ -19,6 +23,7 @@ fn diff_multi_member() -> Result<()> {
1923
let expected = fs::read_to_string(dir.join("diff.patch"))?;
2024
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME"))?;
2125
cmd.current_dir(&dir)
26+
.arg("wsdeps")
2227
.arg("diff")
2328
.assert()
2429
.success()
@@ -32,6 +37,7 @@ fn diff_single_member() -> Result<()> {
3237
let dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("test-resources/single-member");
3338
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME"))?;
3439
cmd.current_dir(&dir)
40+
.arg("wsdeps")
3541
.arg("diff")
3642
.assert()
3743
.success()
@@ -45,6 +51,7 @@ fn diff_standalone() -> Result<()> {
4551
let dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("test-resources/standalone");
4652
let mut cmd = Command::cargo_bin(env!("CARGO_PKG_NAME"))?;
4753
cmd.current_dir(&dir)
54+
.arg("wsdeps")
4855
.arg("diff")
4956
.assert()
5057
.success()

0 commit comments

Comments
 (0)