Skip to content

Commit dc18f4d

Browse files
chore: fix aft version-bump (#5436)
* fix: properly handle component propagation * chore: add test for multi package update with breaking common package
1 parent 2c14363 commit dc18f4d

File tree

6 files changed

+486
-53
lines changed

6 files changed

+486
-53
lines changed

packages/aft/lib/src/repo.dart

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,6 @@ class Repo {
298298
required VersionBumpType type,
299299
required bool Function(PackageInfo) canBump,
300300
required bool includeInChangelog,
301-
bool? propagateToComponent,
302301
}) {
303302
logger.verbose('bumpVersion ${package.name} $commit');
304303
final componentName = aftConfig.componentForPackage(package.name);
@@ -317,7 +316,7 @@ class Repo {
317316
],
318317
(version) => version,
319318
)!;
320-
propagateToComponent ??= component != null &&
319+
final propagateToComponent = component != null &&
321320
component.propagate.propagateToComponent(
322321
currentVersion,
323322
newVersion,
@@ -359,11 +358,13 @@ class Repo {
359358
pkg.pubspecInfo.pubspec.dependencies.keys.contains(package.name) ||
360359
pkg.pubspecInfo.pubspec.devDependencies.keys.contains(package.name),
361360
);
362-
if (commit.isBreakingChange) {
363-
// Back-propagate to all dependent packages for breaking changes.
361+
if (commit.isBreakingChange || propagateToComponent) {
362+
// Back-propagate to all dependent packages for breaking changes or
363+
// changes that need to propagate to a component.
364364
//
365-
// Since we set semantic version constraints, only a breaking change
366-
// in a direct dependency necessitates a version bump.
365+
// Since we set semantic version constraints, only a breaking change in
366+
// a direct dependency or a change that requires propagation
367+
// necessitates a version bump.
367368
logger.verbose(
368369
'Breaking change. Performing dfs on dependent packages...',
369370
);
@@ -380,12 +381,6 @@ class Repo {
380381
}
381382
updateConstraint(package, dependent);
382383
}
383-
} else if (type == VersionBumpType.nonBreaking) {
384-
// For non-breaking changes, we still need to update all constraints
385-
// since we "pin" to minor versions.
386-
for (final dependent in packageDependents) {
387-
updateConstraint(package, dependent);
388-
}
389384
}
390385

391386
// Propagate to all component packages.
@@ -408,7 +403,6 @@ class Repo {
408403
type: type,
409404
canBump: canBump,
410405
includeInChangelog: false,
411-
propagateToComponent: false,
412406
);
413407
},
414408
);

packages/aft/test/version_bump/data/snapshots/multi_package_update.diff

Lines changed: 28 additions & 37 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)