From 38edc0e2694ea957aec32da564859e78213cab28 Mon Sep 17 00:00:00 2001 From: Bryan Oltman Date: Tue, 5 Aug 2025 14:22:19 -0400 Subject: [PATCH] refactor(flutter_version_resolver): replace scoped dep logger with log fn (#3271) --- .../bin/flutter_version_resolver.dart | 48 ++++++++---------- .../lib/flutter_version_resolver.dart | 21 ++++---- .../lib/src/logger.dart | 8 --- .../flutter_version_resolver/pubspec.yaml | 1 - .../test/flutter_version_resolver_test.dart | 50 ++++++++----------- 5 files changed, 53 insertions(+), 75 deletions(-) delete mode 100644 packages/flutter_version_resolver/lib/src/logger.dart diff --git a/packages/flutter_version_resolver/bin/flutter_version_resolver.dart b/packages/flutter_version_resolver/bin/flutter_version_resolver.dart index 9913d13b..51bc2a4e 100644 --- a/packages/flutter_version_resolver/bin/flutter_version_resolver.dart +++ b/packages/flutter_version_resolver/bin/flutter_version_resolver.dart @@ -1,9 +1,7 @@ import 'dart:io'; import 'package:flutter_version_resolver/flutter_version_resolver.dart'; -import 'package:flutter_version_resolver/src/logger.dart'; import 'package:mason_logger/mason_logger.dart'; -import 'package:scoped_deps/scoped_deps.dart'; /// Resolves the Flutter version for a package and optionally writes it to a /// file. @@ -13,34 +11,28 @@ import 'package:scoped_deps/scoped_deps.dart'; /// dart run bin/flutter_version_resolver.dart [] /// ``` Future main(List arguments) async { - return await runScoped(() async { - if (arguments.isEmpty || arguments.length > 2) { - logger.err( - 'Usage: dart run bin/flutter_version_resolver.dart []', - ); - return ExitCode.usage.code; - } + final logger = Logger(); - final packageDirectory = Directory(arguments[0]); - if (!packageDirectory.existsSync()) { - logger.err( - 'Package directory does not exist: ${packageDirectory.path}', - ); - return ExitCode.usage.code; - } - - final flutterVersion = resolveFlutterVersion( - packagePath: packageDirectory.path, + if (arguments.isEmpty) { + logger.err( + 'Usage: dart run bin/flutter_version_resolver.dart ', ); - logger.info('Resolved Flutter version: $flutterVersion'); + return ExitCode.usage.code; + } - if (arguments.length > 1) { - final outputFile = File(arguments[1]) - ..createSync(recursive: true) - ..writeAsStringSync(flutterVersion); - logger.info('Wrote flutter version to ${outputFile.path}'); - } + final packageDirectory = Directory(arguments[0]); + if (!packageDirectory.existsSync()) { + logger.err( + 'Package directory does not exist: ${packageDirectory.path}', + ); + return ExitCode.usage.code; + } - return ExitCode.success.code; - }, values: {loggerRef}); + final flutterVersion = resolveFlutterVersion( + packagePath: packageDirectory.path, + log: logger.info, + ); + logger.info('Resolved Flutter version: $flutterVersion'); + + return ExitCode.success.code; } diff --git a/packages/flutter_version_resolver/lib/flutter_version_resolver.dart b/packages/flutter_version_resolver/lib/flutter_version_resolver.dart index 1b589da7..7bcaebb4 100644 --- a/packages/flutter_version_resolver/lib/flutter_version_resolver.dart +++ b/packages/flutter_version_resolver/lib/flutter_version_resolver.dart @@ -1,10 +1,12 @@ import 'dart:io'; -import 'package:flutter_version_resolver/src/logger.dart'; import 'package:path/path.dart' as p; import 'package:pub_semver/pub_semver.dart'; import 'package:yaml/yaml.dart'; +/// A function that handles log output (e.g. [print]). +typedef LogFn = void Function(String message); + /// {@template version_constraint_exception} /// Thrown when a version constraint is found unexpectedly. /// {@endtemplate} @@ -27,32 +29,31 @@ class VersionConstraintException implements Exception { /// If no version is found, this returns the `stable` version. String resolveFlutterVersion({ required String packagePath, + required LogFn log, }) { - logger - ..info('Resolving Flutter version for $packagePath') - ..info('Checking pubspec.yaml environment section for flutter version'); + log('Resolving Flutter version for $packagePath'); + log('Checking pubspec.yaml environment section for flutter version'); try { final flutterVersion = flutterVersionFromPubspecEnvironment( packagePath: packagePath, ); if (flutterVersion != null) { - logger.info('Found flutter version in pubspec.yaml: $flutterVersion'); + log('Found flutter version in pubspec.yaml: $flutterVersion'); return flutterVersion.toString(); } } on VersionConstraintException catch (e) { - logger.err( + log( '''Found version constraint: ${e.versionConstraint}. Version constraints are not supported in pubspec.yaml. Please specify a specific version.''', ); return 'stable'; } on Exception catch (e) { - logger - ..err('Error resolving Flutter version: $e') - ..info('Falling back to "stable" branch'); + log('Error resolving Flutter version: $e'); + log('Falling back to "stable" branch'); return 'stable'; } - logger.info('No flutter version found in pubspec.yaml, using stable'); + log('No flutter version found in pubspec.yaml, using stable'); return 'stable'; } diff --git a/packages/flutter_version_resolver/lib/src/logger.dart b/packages/flutter_version_resolver/lib/src/logger.dart deleted file mode 100644 index b711b3cc..00000000 --- a/packages/flutter_version_resolver/lib/src/logger.dart +++ /dev/null @@ -1,8 +0,0 @@ -import 'package:mason_logger/mason_logger.dart'; -import 'package:scoped_deps/scoped_deps.dart'; - -/// A reference to a [Logger] instance. -final loggerRef = create(Logger.new); - -/// The [Logger] instance available in the current zone. -Logger get logger => read(loggerRef); diff --git a/packages/flutter_version_resolver/pubspec.yaml b/packages/flutter_version_resolver/pubspec.yaml index d41a999f..6eb9369b 100644 --- a/packages/flutter_version_resolver/pubspec.yaml +++ b/packages/flutter_version_resolver/pubspec.yaml @@ -11,7 +11,6 @@ dependencies: mason_logger: ^0.3.3 path: ^1.9.1 pub_semver: ^2.2.0 - scoped_deps: ^0.1.0+2 yaml: ^3.1.3 dev_dependencies: diff --git a/packages/flutter_version_resolver/test/flutter_version_resolver_test.dart b/packages/flutter_version_resolver/test/flutter_version_resolver_test.dart index e365a3d3..987d64a4 100644 --- a/packages/flutter_version_resolver/test/flutter_version_resolver_test.dart +++ b/packages/flutter_version_resolver/test/flutter_version_resolver_test.dart @@ -1,12 +1,10 @@ import 'dart:io'; import 'package:flutter_version_resolver/flutter_version_resolver.dart'; -import 'package:flutter_version_resolver/src/logger.dart'; import 'package:mason_logger/mason_logger.dart'; import 'package:mocktail/mocktail.dart'; import 'package:path/path.dart' as p; import 'package:pub_semver/pub_semver.dart'; -import 'package:scoped_deps/scoped_deps.dart'; import 'package:test/test.dart'; class _MockLogger extends Mock implements Logger {} @@ -16,13 +14,6 @@ void main() { late Directory packageDirectory; late File pubspecFile; - R runWithOverrides(R Function() body) { - return runScoped( - body, - values: {loggerRef.overrideWith(() => logger)}, - ); - } - setUp(() { logger = _MockLogger(); @@ -37,12 +28,13 @@ void main() { group('resolveFlutterVersion', () { group('when no flutter version is specified in the pubspec.yaml file', () { test('returns the stable version', () { - runWithOverrides(() { - expect( - resolveFlutterVersion(packagePath: packageDirectory.path), - equals('stable'), - ); - }); + expect( + resolveFlutterVersion( + packagePath: packageDirectory.path, + log: logger.info, + ), + equals('stable'), + ); }); }); @@ -56,12 +48,13 @@ environment: }); test('returns the version', () { - runWithOverrides(() { - expect( - resolveFlutterVersion(packagePath: packageDirectory.path), - equals('3.20.0'), - ); - }); + expect( + resolveFlutterVersion( + packagePath: packageDirectory.path, + log: logger.info, + ), + equals('3.20.0'), + ); }); }); @@ -75,14 +68,15 @@ environment: }); test('prints an error message and returns the stable version', () { - runWithOverrides(() { - expect( - resolveFlutterVersion(packagePath: packageDirectory.path), - equals('stable'), - ); - }); + expect( + resolveFlutterVersion( + packagePath: packageDirectory.path, + log: logger.info, + ), + equals('stable'), + ); verify( - () => logger.err( + () => logger.info( '''Found version constraint: ^3.8.0. Version constraints are not supported in pubspec.yaml. Please specify a specific version.''', ), ).called(1);