refactor: centralize Flutter version constraints into a single file (#3654)
This commit is contained in:
@@ -11,9 +11,9 @@ import 'package:shorebird_cli/src/commands/release/releaser.dart';
|
||||
import 'package:shorebird_cli/src/doctor.dart';
|
||||
import 'package:shorebird_cli/src/executables/xcodebuild.dart';
|
||||
import 'package:shorebird_cli/src/extensions/arg_results.dart';
|
||||
import 'package:shorebird_cli/src/flutter_version_constraints.dart';
|
||||
import 'package:shorebird_cli/src/logging/logging.dart';
|
||||
import 'package:shorebird_cli/src/metadata/metadata.dart';
|
||||
import 'package:shorebird_cli/src/platform/apple/apple.dart';
|
||||
import 'package:shorebird_cli/src/release_type.dart';
|
||||
import 'package:shorebird_cli/src/shorebird_env.dart';
|
||||
import 'package:shorebird_cli/src/shorebird_validator.dart';
|
||||
|
||||
@@ -11,6 +11,7 @@ import 'package:shorebird_cli/src/commands/release/releaser.dart';
|
||||
import 'package:shorebird_cli/src/doctor.dart';
|
||||
import 'package:shorebird_cli/src/executables/xcodebuild.dart';
|
||||
import 'package:shorebird_cli/src/extensions/arg_results.dart';
|
||||
import 'package:shorebird_cli/src/flutter_version_constraints.dart';
|
||||
import 'package:shorebird_cli/src/logging/logging.dart';
|
||||
import 'package:shorebird_cli/src/metadata/metadata.dart';
|
||||
import 'package:shorebird_cli/src/platform/apple/apple.dart';
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:pub_semver/pub_semver.dart';
|
||||
import 'package:shorebird_cli/src/artifact_manager.dart';
|
||||
import 'package:shorebird_cli/src/code_push_client_wrapper.dart';
|
||||
import 'package:shorebird_cli/src/extensions/arg_results.dart';
|
||||
import 'package:shorebird_cli/src/flutter_version_constraints.dart';
|
||||
import 'package:shorebird_cli/src/logging/logging.dart';
|
||||
import 'package:shorebird_cli/src/metadata/metadata.dart';
|
||||
import 'package:shorebird_cli/src/release_type.dart';
|
||||
@@ -18,9 +19,6 @@ import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart';
|
||||
|
||||
export 'package:pub_semver/pub_semver.dart';
|
||||
|
||||
/// Minimum Flutter version for obfuscation support across all platforms.
|
||||
final _minimumObfuscationFlutterVersion = Version(3, 41, 2);
|
||||
|
||||
/// {@template releaser}
|
||||
/// Executes platform-specific functionality to create a release.
|
||||
/// {@endtemplate}
|
||||
@@ -212,10 +210,10 @@ abstract class Releaser {
|
||||
shorebirdEnv.flutterRevision,
|
||||
);
|
||||
if (flutterVersion != null &&
|
||||
flutterVersion < _minimumObfuscationFlutterVersion) {
|
||||
flutterVersion < minimumObfuscationFlutterVersion) {
|
||||
logger.err(
|
||||
'Obfuscation on ${releaseType.releasePlatform.displayName} requires Flutter '
|
||||
'$_minimumObfuscationFlutterVersion or later '
|
||||
'Obfuscation on ${releaseType.releasePlatform.displayName} '
|
||||
'requires Flutter $minimumObfuscationFlutterVersion or later '
|
||||
'(current: $flutterVersion).',
|
||||
);
|
||||
throw ProcessExit(ExitCode.unavailable.code);
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
import 'package:pub_semver/pub_semver.dart';
|
||||
|
||||
/// The minimum allowed Flutter version for creating iOS releases.
|
||||
///
|
||||
/// This constraint exists because iOS code push support requires specific
|
||||
/// Flutter engine changes that were first available in this version.
|
||||
final minimumSupportedIosFlutterVersion = Version(3, 22, 2);
|
||||
|
||||
/// The minimum allowed Flutter version for creating macOS releases.
|
||||
///
|
||||
/// macOS code push support was introduced later than iOS and requires
|
||||
/// Flutter engine changes that were first available in this version.
|
||||
final minimumSupportedMacosFlutterVersion = Version(3, 27, 4);
|
||||
|
||||
/// The minimum allowed Flutter version for creating Linux releases.
|
||||
///
|
||||
/// Linux code push support requires Flutter engine changes that were first
|
||||
/// available in this version.
|
||||
final minimumSupportedLinuxFlutterVersion = Version(3, 27, 4);
|
||||
|
||||
/// The minimum allowed Flutter version for creating Windows releases.
|
||||
///
|
||||
/// Windows code push support requires Flutter engine changes that were first
|
||||
/// available in this version.
|
||||
final minimumSupportedWindowsFlutterVersion = Version(3, 32, 6);
|
||||
|
||||
/// Minimum Flutter version for obfuscation support across all platforms.
|
||||
///
|
||||
/// Obfuscation requires gen_snapshot changes (--save-obfuscation-map and
|
||||
/// --strip flags) that were first available in this Flutter version.
|
||||
final minimumObfuscationFlutterVersion = Version(3, 41, 2);
|
||||
@@ -2,7 +2,6 @@ import 'dart:io';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
import 'package:pub_semver/pub_semver.dart';
|
||||
import 'package:scoped_deps/scoped_deps.dart';
|
||||
import 'package:shorebird_cli/src/archive/directory_archive.dart';
|
||||
import 'package:shorebird_cli/src/commands/patch/patcher.dart';
|
||||
@@ -23,12 +22,6 @@ export 'macho.dart';
|
||||
export 'missing_xcode_project_exception.dart';
|
||||
export 'plist.dart';
|
||||
|
||||
/// The minimum allowed Flutter version for creating iOS releases.
|
||||
final minimumSupportedIosFlutterVersion = Version(3, 22, 2);
|
||||
|
||||
/// The minimum allowed Flutter version for creating macOS releases.
|
||||
final minimumSupportedMacosFlutterVersion = Version(3, 27, 4);
|
||||
|
||||
/// A reference to a [Apple] instance.
|
||||
final appleRef = create(Apple.new);
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:path/path.dart' as p;
|
||||
import 'package:pub_semver/pub_semver.dart';
|
||||
import 'package:scoped_deps/scoped_deps.dart';
|
||||
|
||||
/// The primary release artifact architecture for Linux releases.
|
||||
@@ -14,9 +13,6 @@ import 'package:scoped_deps/scoped_deps.dart';
|
||||
/// - executable_flutter_app
|
||||
const primaryLinuxReleaseArtifactArch = 'bundle';
|
||||
|
||||
/// The minimum allowed Flutter version for creating Linux releases.
|
||||
final minimumSupportedLinuxFlutterVersion = Version(3, 27, 4);
|
||||
|
||||
/// A reference to a [Linux] instance.
|
||||
final linuxRef = create(Linux.new);
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
export 'package:shorebird_cli/src/flutter_version_constraints.dart';
|
||||
|
||||
export 'android/android.dart';
|
||||
export 'apple/apple.dart';
|
||||
export 'linux/linux.dart';
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'dart:io';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:path/path.dart' as p;
|
||||
import 'package:pub_semver/pub_semver.dart';
|
||||
import 'package:scoped_deps/scoped_deps.dart';
|
||||
|
||||
/// The primary release artifact architecture for Windows releases.
|
||||
@@ -14,9 +13,6 @@ import 'package:scoped_deps/scoped_deps.dart';
|
||||
/// - data/, which contains flutter assets and the app.so file
|
||||
const primaryWindowsReleaseArtifactArch = 'win_archive';
|
||||
|
||||
/// The minimum allowed Flutter version for creating Windows releases.
|
||||
final minimumSupportedWindowsFlutterVersion = Version(3, 32, 6);
|
||||
|
||||
/// A reference to a [Windows] instance.
|
||||
final windowsRef = create(Windows.new);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:pub_semver/pub_semver.dart';
|
||||
import 'package:shorebird_cli/src/flutter_version_constraints.dart';
|
||||
import 'package:shorebird_cli/src/platform/linux/linux.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user