feat(shorebird_cli): add inferredReleaseVersion to CreatePatchMetadata (#2968)

This commit is contained in:
Felix Angelov
2025-03-13 17:24:31 -05:00
committed by GitHub
parent 5bb0df99a4
commit d2bc1bc005
10 changed files with 58 additions and 1 deletions
@@ -299,6 +299,7 @@ NOTE: this is ${styleBold.wrap('not')} recommended. Asset changes cannot be incl
final app = await codePushClientWrapper.getApp(appId: appId);
var inferredReleaseVersion = false;
File? patchArtifactFile;
final Release release;
final releasePlatform = patcher.releaseType.releasePlatform;
@@ -338,6 +339,7 @@ Building with Flutter $flutterVersionString to determine the release version...
+-------------------------------------------------------------------------------+
''');
lastBuiltFlutterRevision = shorebirdEnv.flutterRevision;
inferredReleaseVersion = true;
patchArtifactFile = await patcher.buildPatchArtifact();
final releaseVersion = await patcher.extractReleaseVersionFromArtifact(
patchArtifactFile,
@@ -439,6 +441,7 @@ Building patch with Flutter $flutterVersionString
hasAssetChanges: diffStatus.hasAssetChanges,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: diffStatus.hasNativeChanges,
inferredReleaseVersion: inferredReleaseVersion,
environment: BuildEnvironmentMetadata(
flutterRevision: shorebirdEnv.flutterRevision,
operatingSystem: platform.operatingSystem,
@@ -24,6 +24,7 @@ class CreatePatchMetadata extends Equatable {
required this.hasAssetChanges,
required this.usedIgnoreNativeChangesFlag,
required this.hasNativeChanges,
required this.inferredReleaseVersion,
required this.environment,
this.linkPercentage,
});
@@ -37,6 +38,7 @@ class CreatePatchMetadata extends Equatable {
bool hasAssetChanges = false,
bool usedIgnoreNativeChangesFlag = false,
bool hasNativeChanges = false,
bool inferredReleaseVersion = false,
double? linkPercentage,
BuildEnvironmentMetadata? environment,
}) => CreatePatchMetadata(
@@ -45,6 +47,7 @@ class CreatePatchMetadata extends Equatable {
hasAssetChanges: hasAssetChanges,
usedIgnoreNativeChangesFlag: usedIgnoreNativeChangesFlag,
hasNativeChanges: hasNativeChanges,
inferredReleaseVersion: inferredReleaseVersion,
linkPercentage: linkPercentage,
environment: environment ?? BuildEnvironmentMetadata.forTest(),
);
@@ -65,6 +68,7 @@ class CreatePatchMetadata extends Equatable {
bool? hasAssetChanges,
bool? usedIgnoreNativeChangesFlag,
bool? hasNativeChanges,
bool? inferredReleaseVersion,
double? linkPercentage,
BuildEnvironmentMetadata? environment,
}) => CreatePatchMetadata(
@@ -75,6 +79,8 @@ class CreatePatchMetadata extends Equatable {
usedIgnoreNativeChangesFlag:
usedIgnoreNativeChangesFlag ?? this.usedIgnoreNativeChangesFlag,
hasNativeChanges: hasNativeChanges ?? this.hasNativeChanges,
inferredReleaseVersion:
inferredReleaseVersion ?? this.inferredReleaseVersion,
linkPercentage: linkPercentage ?? this.linkPercentage,
environment: environment ?? this.environment,
);
@@ -108,6 +114,10 @@ class CreatePatchMetadata extends Equatable {
/// behavior in a patch.
final bool hasNativeChanges;
/// Whether the release version had to be inferred by Shorebird because
/// it was not explicitly specified via the --release-version flag.
final bool inferredReleaseVersion;
/// The percentage of code that was linked in the patch.
/// Generally, the higher the percentage, the better the patch performance
/// since more code will be run on the CPU as opposed to the simulator.
@@ -127,6 +137,7 @@ class CreatePatchMetadata extends Equatable {
usedIgnoreNativeChangesFlag,
hasNativeChanges,
linkPercentage,
inferredReleaseVersion,
environment,
];
}
@@ -29,6 +29,10 @@ CreatePatchMetadata _$CreatePatchMetadataFromJson(
(v) => v as bool,
),
hasNativeChanges: $checkedConvert('has_native_changes', (v) => v as bool),
inferredReleaseVersion: $checkedConvert(
'inferred_release_version',
(v) => v as bool,
),
environment: $checkedConvert(
'environment',
(v) => BuildEnvironmentMetadata.fromJson(v as Map<String, dynamic>),
@@ -46,6 +50,7 @@ CreatePatchMetadata _$CreatePatchMetadataFromJson(
'hasAssetChanges': 'has_asset_changes',
'usedIgnoreNativeChangesFlag': 'used_ignore_native_changes_flag',
'hasNativeChanges': 'has_native_changes',
'inferredReleaseVersion': 'inferred_release_version',
'linkPercentage': 'link_percentage',
},
);
@@ -58,6 +63,7 @@ Map<String, dynamic> _$CreatePatchMetadataToJson(
'has_asset_changes': instance.hasAssetChanges,
'used_ignore_native_changes_flag': instance.usedIgnoreNativeChangesFlag,
'has_native_changes': instance.hasNativeChanges,
'inferred_release_version': instance.inferredReleaseVersion,
'link_percentage': instance.linkPercentage,
'environment': instance.environment.toJson(),
};
@@ -630,6 +630,7 @@ void main() {
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: false,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
operatingSystem: operatingSystem,
@@ -731,6 +731,7 @@ Looked in:
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: false,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
operatingSystem: operatingSystem,
@@ -1068,6 +1068,7 @@ void main() {
hasAssetChanges: true,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: true,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
operatingSystem: operatingSystem,
@@ -1088,6 +1089,7 @@ void main() {
hasAssetChanges: true,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: true,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
operatingSystem: operatingSystem,
@@ -1116,6 +1118,7 @@ void main() {
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: false,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
operatingSystem: operatingSystem,
@@ -1136,6 +1139,7 @@ void main() {
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: false,
inferredReleaseVersion: false,
linkPercentage: linkPercentage,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
@@ -1524,6 +1524,7 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}'''),
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: true,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
operatingSystem: operatingSystem,
@@ -1544,6 +1545,7 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}'''),
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: true,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
operatingSystem: operatingSystem,
@@ -1572,6 +1574,7 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}'''),
hasAssetChanges: true,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: false,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
operatingSystem: operatingSystem,
@@ -1592,6 +1595,7 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}'''),
hasAssetChanges: true,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: false,
inferredReleaseVersion: false,
linkPercentage: linkPercentage,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
@@ -1123,6 +1123,7 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}'''),
hasAssetChanges: true,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: false,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
operatingSystem: operatingSystem,
@@ -1141,6 +1142,7 @@ For more information see: ${supportedFlutterVersionsUrl.toLink()}'''),
hasAssetChanges: true,
usedIgnoreNativeChangesFlag: allowNativeDiffs,
hasNativeChanges: false,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: flutterRevision,
operatingSystem: operatingSystem,
@@ -813,7 +813,15 @@ void main() {
releaseArtifact: any(named: 'releaseArtifact'),
),
() => logger.confirm('Would you like to continue?'),
() => patcher.updatedCreatePatchMetadata(any()),
() => patcher.updatedCreatePatchMetadata(
any(
that: isA<CreatePatchMetadata>().having(
(m) => m.inferredReleaseVersion,
'inferredReleaseVersion',
isFalse,
),
),
),
() => patcher.uploadPatchArtifacts(
appId: appId,
releaseId: release.id,
@@ -1104,6 +1112,15 @@ void main() {
),
() =>
patcher.buildPatchArtifact(releaseVersion: releaseVersion),
() => patcher.updatedCreatePatchMetadata(
any(
that: isA<CreatePatchMetadata>().having(
(m) => m.inferredReleaseVersion,
'inferredReleaseVersion',
isTrue,
),
),
),
]);
},
);
@@ -12,6 +12,7 @@ void main() {
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: false,
hasNativeChanges: false,
inferredReleaseVersion: false,
linkPercentage: 99.9,
environment: BuildEnvironmentMetadata(
flutterRevision: '853d13d954df3b6e9c2f07b72062f33c52a9a64b',
@@ -36,6 +37,7 @@ void main() {
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: false,
hasNativeChanges: false,
inferredReleaseVersion: false,
linkPercentage: 99.9,
environment: BuildEnvironmentMetadata(
flutterRevision: '853d13d954df3b6e9c2f07b72062f33c52a9a64b',
@@ -57,6 +59,7 @@ void main() {
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: false,
hasNativeChanges: false,
inferredReleaseVersion: false,
linkPercentage: 99.9,
environment: BuildEnvironmentMetadata(
flutterRevision: '853d13d954df3b6e9c2f07b72062f33c52a9a64b',
@@ -94,6 +97,7 @@ void main() {
hasAssetChanges: true,
usedIgnoreNativeChangesFlag: true,
hasNativeChanges: true,
inferredReleaseVersion: false,
linkPercentage: 99.8,
environment: BuildEnvironmentMetadata(
flutterRevision: 'asdf',
@@ -117,6 +121,7 @@ void main() {
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: false,
hasNativeChanges: false,
inferredReleaseVersion: false,
linkPercentage: 99.9,
environment: BuildEnvironmentMetadata(
flutterRevision: '853d13d954df3b6e9c2f07b72062f33c52a9a64b',
@@ -133,6 +138,7 @@ void main() {
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: false,
hasNativeChanges: false,
inferredReleaseVersion: false,
linkPercentage: 99.9,
environment: BuildEnvironmentMetadata(
flutterRevision: '853d13d954df3b6e9c2f07b72062f33c52a9a64b',
@@ -153,6 +159,7 @@ void main() {
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: false,
hasNativeChanges: false,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: '853d13d954df3b6e9c2f07b72062f33c52a9a64b',
operatingSystem: 'macos',
@@ -168,6 +175,7 @@ void main() {
hasAssetChanges: false,
usedIgnoreNativeChangesFlag: false,
hasNativeChanges: false,
inferredReleaseVersion: false,
environment: BuildEnvironmentMetadata(
flutterRevision: '853d13d954df3b6e9c2f07b72062f33c52a9a64b',
operatingSystem: 'macos',