diff --git a/src/cargo/ops/cargo_new.rs b/src/cargo/ops/cargo_new.rs index 3ba55fc2ae78..4c8023ae0391 100644 --- a/src/cargo/ops/cargo_new.rs +++ b/src/cargo/ops/cargo_new.rs @@ -844,11 +844,24 @@ fn mk(config: &Config, opts: &MkOptions<'_>) -> CargoResult<()> { } // Try to add the new package to the workspace members. - update_manifest_with_new_member( + if update_manifest_with_new_member( &root_manifest_path, &mut workspace_document, &display_path, - )?; + )? { + config.shell().status( + "Adding", + format!( + "`{}` as member of workspace at `{}`", + PathBuf::from(&display_path) + .file_name() + .unwrap() + .to_str() + .unwrap(), + root_manifest_path.parent().unwrap().display() + ), + )? + } } } } @@ -965,7 +978,7 @@ fn update_manifest_with_new_member( root_manifest_path: &Path, workspace_document: &mut toml_edit::Document, display_path: &str, -) -> CargoResult<()> { +) -> CargoResult { // If the members element already exist, check if one of the patterns // in the array already includes the new package's relative path. // - Add the relative path if the members don't match the new package's path. @@ -983,7 +996,7 @@ fn update_manifest_with_new_member( .with_context(|| format!("cannot build glob pattern from `{}`", pat))?; if pattern.matches(&display_path) { - return Ok(()); + return Ok(false); } } @@ -1003,7 +1016,8 @@ fn update_manifest_with_new_member( write_atomic( &root_manifest_path, workspace_document.to_string().to_string().as_bytes(), - ) + )?; + Ok(true) } fn get_display_path(root_manifest_path: &Path, package_path: &Path) -> CargoResult { diff --git a/tests/testsuite/cargo_init/workspace_add_member/stderr.log b/tests/testsuite/cargo_init/workspace_add_member/stderr.log index 9458b0272664..f8e6cce46eac 100644 --- a/tests/testsuite/cargo_init/workspace_add_member/stderr.log +++ b/tests/testsuite/cargo_init/workspace_add_member/stderr.log @@ -1,2 +1,3 @@ Creating binary (application) package + Adding `foo` as member of workspace at `[ROOT]/case` note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/tests/testsuite/cargo_new/add_members_to_workspace_format_previous_items/stderr.log b/tests/testsuite/cargo_new/add_members_to_workspace_format_previous_items/stderr.log index c3053272fb1e..34f20df55969 100644 --- a/tests/testsuite/cargo_new/add_members_to_workspace_format_previous_items/stderr.log +++ b/tests/testsuite/cargo_new/add_members_to_workspace_format_previous_items/stderr.log @@ -1,2 +1,3 @@ Creating binary (application) `foo` package + Adding `foo` as member of workspace at `[ROOT]/case` note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/tests/testsuite/cargo_new/add_members_to_workspace_format_sorted/stderr.log b/tests/testsuite/cargo_new/add_members_to_workspace_format_sorted/stderr.log index c3053272fb1e..34f20df55969 100644 --- a/tests/testsuite/cargo_new/add_members_to_workspace_format_sorted/stderr.log +++ b/tests/testsuite/cargo_new/add_members_to_workspace_format_sorted/stderr.log @@ -1,2 +1,3 @@ Creating binary (application) `foo` package + Adding `foo` as member of workspace at `[ROOT]/case` note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/tests/testsuite/cargo_new/add_members_to_workspace_with_absolute_package_path/stderr.log b/tests/testsuite/cargo_new/add_members_to_workspace_with_absolute_package_path/stderr.log index c3053272fb1e..34f20df55969 100644 --- a/tests/testsuite/cargo_new/add_members_to_workspace_with_absolute_package_path/stderr.log +++ b/tests/testsuite/cargo_new/add_members_to_workspace_with_absolute_package_path/stderr.log @@ -1,2 +1,3 @@ Creating binary (application) `foo` package + Adding `foo` as member of workspace at `[ROOT]/case` note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/tests/testsuite/cargo_new/add_members_to_workspace_with_empty_members/stderr.log b/tests/testsuite/cargo_new/add_members_to_workspace_with_empty_members/stderr.log index c3053272fb1e..34f20df55969 100644 --- a/tests/testsuite/cargo_new/add_members_to_workspace_with_empty_members/stderr.log +++ b/tests/testsuite/cargo_new/add_members_to_workspace_with_empty_members/stderr.log @@ -1,2 +1,3 @@ Creating binary (application) `foo` package + Adding `foo` as member of workspace at `[ROOT]/case` note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/tests/testsuite/cargo_new/add_members_to_workspace_without_members/stderr.log b/tests/testsuite/cargo_new/add_members_to_workspace_without_members/stderr.log index 25556c9505ad..0f1529c26cd0 100644 --- a/tests/testsuite/cargo_new/add_members_to_workspace_without_members/stderr.log +++ b/tests/testsuite/cargo_new/add_members_to_workspace_without_members/stderr.log @@ -1,2 +1,3 @@ Creating library `bar` package + Adding `bar` as member of workspace at `[ROOT]/case` note: see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/tests/testsuite/workspaces.rs b/tests/testsuite/workspaces.rs index 5d01326ef79a..6373772f9836 100644 --- a/tests/testsuite/workspaces.rs +++ b/tests/testsuite/workspaces.rs @@ -1065,6 +1065,7 @@ fn new_creates_members_list() { p.cargo("new --lib bar") .with_stderr("\ [CREATING] library `bar` package +[ADDING] `bar` as member of workspace at `[ROOT]/foo` [NOTE] see more `Cargo.toml` keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html ") .run();