Get needed version from API tool in health check (#213)
* Get needed version from API tool in health check
* Fix bug
* Rev version
diff --git a/pkgs/firehose/CHANGELOG.md b/pkgs/firehose/CHANGELOG.md
index cac9a63..94b3dd4 100644
--- a/pkgs/firehose/CHANGELOG.md
+++ b/pkgs/firehose/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.4.2
+
+- Get needed version from `dart_apitool` in PR health checks.
+
## 0.4.1
- Ensure that packages are listed in lexical order.
diff --git a/pkgs/firehose/lib/src/health/health.dart b/pkgs/firehose/lib/src/health/health.dart
index 9e4831b..440b31f 100644
--- a/pkgs/firehose/lib/src/health/health.dart
+++ b/pkgs/firehose/lib/src/health/health.dart
@@ -141,27 +141,14 @@
var formattedChanges = const JsonEncoder.withIndent(' ').convert(report);
print('Breaking change report:\n$formattedChanges');
- BreakingLevel breakingLevel;
- if ((report['noChangesDetected'] as bool?) ?? false) {
- breakingLevel = BreakingLevel.none;
- } else {
- if ((report['breakingChanges'] as Map? ?? {}).isNotEmpty) {
- breakingLevel = BreakingLevel.breaking;
- } else if ((report['nonBreakingChanges'] as Map? ?? {}).isNotEmpty) {
- breakingLevel = BreakingLevel.nonBreaking;
- } else {
- breakingLevel = BreakingLevel.none;
- }
- }
-
- var oldPackage = Package(
- Directory(path.join(baseDirectory.path, currentPath)),
- package.repository,
- );
+ final versionMap = decoded['version'] as Map<String, dynamic>;
changeForPackage[package] = BreakingChange(
- level: breakingLevel,
- oldVersion: oldPackage.version!,
- newVersion: package.version!,
+ level: _breakingLevel(report),
+ oldVersion: Version.parse(versionMap['old'].toString()),
+ newVersion: Version.parse(versionMap['new'].toString()),
+ neededVersion: Version.parse(versionMap['needed'].toString()),
+ versionIsFine: versionMap['success'] as bool,
+ explanation: versionMap['explanation'].toString(),
);
}
return HealthCheckResult(
@@ -178,6 +165,20 @@
);
}
+ BreakingLevel _breakingLevel(Map<String, dynamic> report) {
+ BreakingLevel breakingLevel;
+ if ((report['noChangesDetected'] as bool?) ?? false) {
+ breakingLevel = BreakingLevel.none;
+ } else if ((report['breakingChanges'] as Map? ?? {}).isNotEmpty) {
+ breakingLevel = BreakingLevel.breaking;
+ } else if ((report['nonBreakingChanges'] as Map? ?? {}).isNotEmpty) {
+ breakingLevel = BreakingLevel.nonBreaking;
+ } else {
+ breakingLevel = BreakingLevel.none;
+ }
+ return breakingLevel;
+ }
+
Future<HealthCheckResult> licenseCheck(GithubApi github) async {
var files = await github.listFilesForPR();
var allFilePaths = await getFilesWithoutLicenses(Directory.current);
@@ -379,22 +380,24 @@
final BreakingLevel level;
final Version oldVersion;
final Version newVersion;
+ final Version neededVersion;
+ final bool versionIsFine;
+ final String explanation;
BreakingChange({
required this.level,
required this.oldVersion,
required this.newVersion,
+ required this.neededVersion,
+ required this.versionIsFine,
+ required this.explanation,
});
- Version get suggestedNewVersion => getNewVersion(level, oldVersion);
-
- bool get versionIsFine => newVersion == suggestedNewVersion;
-
String toMarkdownRow() => [
level.name,
oldVersion,
newVersion,
- versionIsFine ? suggestedNewVersion : '**$suggestedNewVersion**',
+ versionIsFine ? neededVersion : '**$neededVersion** <br> $explanation',
versionIsFine ? ':heavy_check_mark:' : ':warning:'
].map((e) => e.toString()).join('|');
}
diff --git a/pkgs/firehose/pubspec.yaml b/pkgs/firehose/pubspec.yaml
index 4f26573..404af5e 100644
--- a/pkgs/firehose/pubspec.yaml
+++ b/pkgs/firehose/pubspec.yaml
@@ -1,6 +1,6 @@
name: firehose
description: A tool to automate publishing of Pub packages from GitHub actions.
-version: 0.4.1
+version: 0.4.2
repository: https://github.com/dart-lang/ecosystem/tree/main/pkgs/firehose
environment: