| @@ -5,7 +5,7 @@ use cargo_metadata::{DependencyKind, Metadata, Package, PackageId}; · 4 unmodified lines |
| 5 | use crate::{ | 5 | use crate::{ |
| 6 | git, | 6 | git, |
| 7 | traverse::dependency::VersionAdjustment, | 7 | traverse::dependency::VersionAdjustment, |
| 8 | utils::{is_pre_release_version, package_by_name, workspace_package_by_name}, | 8 | utils::{is_pre_release_version, package_by_id, package_by_name, workspace_package_by_name}, |
| 9 | version, | 9 | version, |
| 10 | }; | 10 | }; |
| 11 | | 11 | |
| @@ -26,7 +26,7 @@ pub mod dependency { · 14 unmodified lines |
| 26 | /// Initially selected by user | 26 | /// Initially selected by user |
| 27 | UserSelection, | 27 | UserSelection, |
| 28 | /// A changed dependency of the user selected crate that thus needs publishing | 28 | /// A changed dependency of the user selected crate that thus needs publishing |
| 29 | DependencyOfUserSelection, | 29 | DependencyOrDependentOfUserSelection, |
| 30 | } | 30 | } |
| 31 | | 31 | |
| 32 | #[derive(Clone, Debug)] | 32 | #[derive(Clone, Debug)] |
| @@ -53,6 +53,8 @@ pub mod dependency { · 20 unmodified lines |
| 53 | reason: SkippedReason, | 53 | reason: SkippedReason, |
| 54 | adjustment: Option<VersionAdjustment<'meta>>, | 54 | adjustment: Option<VersionAdjustment<'meta>>, |
| 55 | }, | 55 | }, |
| | 56 | /// One of our dependencies will see a version adjustment, which we must update in our manifest |
| | 57 | ManifestNeedsUpdate, |
| 56 | } | 58 | } |
| 57 | } | 59 | } |
| 58 | | 60 | |
| @@ -121,6 +123,25 @@ pub fn dependencies( · 62 unmodified lines |
| 121 | } | 123 | } |
| 122 | } | 124 | } |
| 123 | } | 125 | } |
| | 126 | |
| | 127 | let crates_for_manifest_update = ctx |
| | 128 | .meta |
| | 129 | .workspace_members |
| | 130 | .iter() |
| | 131 | .map(|id| package_by_id(&ctx.meta, id)) |
| | 132 | .filter(|wsp| crates.iter().all(|c| c.package.id != wsp.id)) |
| | 133 | .filter(|wsp| { |
| | 134 | wsp.dependencies |
| | 135 | .iter() |
| | 136 | .any(|d| crates.iter().any(|c| c.package.name == d.name)) |
| | 137 | }) |
| | 138 | .map(|wsp| Dependency { |
| | 139 | kind: dependency::Kind::DependencyOrDependentOfUserSelection, |
| | 140 | package: wsp, |
| | 141 | mode: dependency::Mode::ManifestNeedsUpdate, |
| | 142 | }) |
| | 143 | .collect::<Vec<_>>(); |
| | 144 | crates.extend(crates_for_manifest_update); |
| 124 | Ok(crates) | 145 | Ok(crates) |
| 125 | } | 146 | } |
| 126 | | 147 | |
| @@ -154,7 +175,7 @@ fn depth_first_traversal<'meta>( · 27 unmodified lines |
| 154 | if is_pre_release_version(&workspace_dependency.version) || add_production_crates { | 175 | if is_pre_release_version(&workspace_dependency.version) || add_production_crates { |
| 155 | crates.push(Dependency { | 176 | crates.push(Dependency { |
| 156 | package: workspace_dependency, | 177 | package: workspace_dependency, |
| 157 | kind: dependency::Kind::DependencyOfUserSelection, | 178 | kind: dependency::Kind::DependencyOrDependentOfUserSelection, |
| 158 | mode: dependency::Mode::ToBePublished { | 179 | mode: dependency::Mode::ToBePublished { |
| 159 | adjustment: VersionAdjustment::Changed { | 180 | adjustment: VersionAdjustment::Changed { |
| 160 | change, | 181 | change, |
| @@ -165,7 +186,7 @@ fn depth_first_traversal<'meta>( · 4 unmodified lines |
| 165 | } else { | 186 | } else { |
| 166 | crates.push(Dependency { | 187 | crates.push(Dependency { |
| 167 | package: workspace_dependency, | 188 | package: workspace_dependency, |
| 168 | kind: dependency::Kind::DependencyOfUserSelection, | 189 | kind: dependency::Kind::DependencyOrDependentOfUserSelection, |
| 169 | mode: dependency::Mode::Skipped { | 190 | mode: dependency::Mode::Skipped { |
| 170 | reason: dependency::SkippedReason::DeniedAutopublishOfProductionCrate, | 191 | reason: dependency::SkippedReason::DeniedAutopublishOfProductionCrate, |
| 171 | adjustment: None, | 192 | adjustment: None, |
| @@ -175,7 +196,7 @@ fn depth_first_traversal<'meta>( · 3 unmodified lines |
| 175 | } else { | 196 | } else { |
| 176 | skipped.push(Dependency { | 197 | skipped.push(Dependency { |
| 177 | package: workspace_dependency, | 198 | package: workspace_dependency, |
| 178 | kind: dependency::Kind::DependencyOfUserSelection, | 199 | kind: dependency::Kind::DependencyOrDependentOfUserSelection, |
| 179 | mode: dependency::Mode::Skipped { | 200 | mode: dependency::Mode::Skipped { |
| 180 | reason: dependency::SkippedReason::Unchanged, | 201 | reason: dependency::SkippedReason::Unchanged, |
| 181 | adjustment: None, | 202 | adjustment: None, |