From 543028764965904f0a91826b6e3f1c275b76b6fb Mon Sep 17 00:00:00 2001 From: Gabriel Tavares Date: Sun, 21 Jul 2024 20:36:59 -0300 Subject: [PATCH] fix(all-sh): run all.sh bash to fix all issues in the project. --- .github/workflows/dart_kiwi_example.yml | 2 +- .github/workflows/flutter_kiwi_example.yml | 2 +- .github/workflows/kiwi.yml | 2 +- .../flutter_kiwi/lib/screens/main_screen.dart | 9 +- packages/kiwi/example/kiwi_example.dart | 3 +- packages/kiwi/lib/src/kiwi_container.dart | 12 ++- packages/kiwi/test/kiwi_test.dart | 40 ++++++--- .../lib/src/kiwi_injector_generator.dart | 88 +++++++++++++------ .../lib/src/model/kiwi_generator_error.dart | 3 +- packages/kiwi_generator/pubspec.yaml | 2 +- tools/all.sh | 1 + tools/fix.sh | 31 +++++++ tools/format.sh | 8 +- 13 files changed, 148 insertions(+), 55 deletions(-) create mode 100644 tools/fix.sh diff --git a/.github/workflows/dart_kiwi_example.yml b/.github/workflows/dart_kiwi_example.yml index 59cfb53..479291a 100644 --- a/.github/workflows/dart_kiwi_example.yml +++ b/.github/workflows/dart_kiwi_example.yml @@ -19,4 +19,4 @@ jobs: channel: 'stable' - run: flutter packages get - run: flutter analyze - - run: dart format -o none --set-exit-if-changed . + - run: dart format -o none --set-exit-if-changed . diff --git a/.github/workflows/flutter_kiwi_example.yml b/.github/workflows/flutter_kiwi_example.yml index 8fa7f2a..eefcef2 100644 --- a/.github/workflows/flutter_kiwi_example.yml +++ b/.github/workflows/flutter_kiwi_example.yml @@ -19,4 +19,4 @@ jobs: channel: 'stable' - run: flutter packages get - run: flutter analyze - - run: dart format -o none --set-exit-if-changed . + - run: dart format -o none --set-exit-if-changed . diff --git a/.github/workflows/kiwi.yml b/.github/workflows/kiwi.yml index 5e0df85..9da48f3 100644 --- a/.github/workflows/kiwi.yml +++ b/.github/workflows/kiwi.yml @@ -22,5 +22,5 @@ jobs: sdk: ${{ matrix.sdk }} - run: dart pub get - run: dart analyze --fatal-infos --fatal-warnings . - - run: dart format -o none --set-exit-if-changed . + - run: dart format -o none --set-exit-if-changed . - run: dart pub run test diff --git a/examples/flutter_kiwi/lib/screens/main_screen.dart b/examples/flutter_kiwi/lib/screens/main_screen.dart index 29c0901..ecbdd0b 100644 --- a/examples/flutter_kiwi/lib/screens/main_screen.dart +++ b/examples/flutter_kiwi/lib/screens/main_screen.dart @@ -21,7 +21,8 @@ class MainScreen extends StatelessWidget { MaterialButton( color: Theme.of(context).primaryColor, onPressed: () async { - await Navigator.of(context).push(MaterialPageRoute(builder: (context) => ResolveScreen())); + await Navigator.of(context).push( + MaterialPageRoute(builder: (context) => ResolveScreen())); KiwiContainer().clear(); }, child: Text( @@ -34,7 +35,8 @@ class MainScreen extends StatelessWidget { MaterialButton( color: Theme.of(context).primaryColor, onPressed: () async { - await Navigator.of(context).push(MaterialPageRoute(builder: (context) => ErrorScreen())); + await Navigator.of(context) + .push(MaterialPageRoute(builder: (context) => ErrorScreen())); KiwiContainer().clear(); }, child: Text( @@ -47,7 +49,8 @@ class MainScreen extends StatelessWidget { MaterialButton( color: Theme.of(context).primaryColor, onPressed: () async { - await Navigator.of(context).push(MaterialPageRoute(builder: (context) => ScopedScreen())); + await Navigator.of(context).push( + MaterialPageRoute(builder: (context) => ScopedScreen())); KiwiContainer().clear(); }, child: Text( diff --git a/packages/kiwi/example/kiwi_example.dart b/packages/kiwi/example/kiwi_example.dart index 1b26147..66da0eb 100644 --- a/packages/kiwi/example/kiwi_example.dart +++ b/packages/kiwi/example/kiwi_example.dart @@ -5,7 +5,8 @@ main() { container.registerInstance(Logger()); container.registerSingleton((c) => Logger(), name: 'namedLogger'); - container.registerFactory((c) => ServiceA(logger: c.resolve('namedLogger'))); + container.registerFactory( + (c) => ServiceA(logger: c.resolve('namedLogger'))); final comumLogger = container.resolve(); final namedLogger = container.resolve('namedLogger'); diff --git a/packages/kiwi/lib/src/kiwi_container.dart b/packages/kiwi/lib/src/kiwi_container.dart index 1f81c39..317c683 100644 --- a/packages/kiwi/lib/src/kiwi_container.dart +++ b/packages/kiwi/lib/src/kiwi_container.dart @@ -60,7 +60,8 @@ class KiwiContainer { /// }; /// ``` Map<_ProviderName?, _ProviderValue> get namedProviders { - return Map<_ProviderName?, _ProviderValue>.from(_providers)..removeWhere((key, value) => key == null); + return Map<_ProviderName?, _ProviderValue>.from(_providers) + ..removeWhere((key, value) => key == null); } /// All unnamed providers values registered in the container. @@ -73,7 +74,8 @@ class KiwiContainer { /// }; /// ``` Map<_ProviderName?, _ProviderValue> get unnamedProviders { - return Map<_ProviderName?, _ProviderValue>.from(_providers)..removeWhere((key, value) => key != null); + return Map<_ProviderName?, _ProviderValue>.from(_providers) + ..removeWhere((key, value) => key != null); } /// Whether ignoring KiwiErrors in the following cases: @@ -214,10 +216,12 @@ class KiwiContainer { void _setProvider(String? name, _Provider provider) { if (!silent && isRegistered(name: name)) { - throw KiwiError('The type `$T` was already registered${name == null ? '' : ' for the name `$name`'}'); + throw KiwiError( + 'The type `$T` was already registered${name == null ? '' : ' for the name `$name`'}'); } - _providers.putIfAbsent(name, () => _ProviderValue.from({}))[T] = provider as _Provider; + _providers.putIfAbsent(name, () => _ProviderValue.from({}))[T] = + provider as _Provider; } } diff --git a/packages/kiwi/test/kiwi_test.dart b/packages/kiwi/test/kiwi_test.dart index 2792cda..2f20388 100644 --- a/packages/kiwi/test/kiwi_test.dart +++ b/packages/kiwi/test/kiwi_test.dart @@ -94,30 +94,41 @@ void main() { test('builders should be resolved', () { container.registerSingleton((c) => 5); - container.registerFactory((c) => const Sith('Anakin', 'Skywalker', 'DarthVader')); + container.registerFactory( + (c) => const Sith('Anakin', 'Skywalker', 'DarthVader')); container.registerFactory((c) => const Character('Anakin', 'Skywalker')); - container.registerFactory((c) => const Sith('Anakin', 'Skywalker', 'DarthVader'), name: 'named'); + container.registerFactory( + (c) => const Sith('Anakin', 'Skywalker', 'DarthVader'), + name: 'named'); expect(container.resolve(), 5); - expect(container.resolve(), const Sith('Anakin', 'Skywalker', 'DarthVader')); - expect(container.resolve(), const Character('Anakin', 'Skywalker')); - expect(container.resolve('named'), const Sith('Anakin', 'Skywalker', 'DarthVader')); + expect(container.resolve(), + const Sith('Anakin', 'Skywalker', 'DarthVader')); + expect(container.resolve(), + const Character('Anakin', 'Skywalker')); + expect(container.resolve('named'), + const Sith('Anakin', 'Skywalker', 'DarthVader')); }); test('builders should always be created', () { container.registerFactory((c) => Character('Anakin', 'Skywalker')); - expect(container.resolve(), isNot(same(container.resolve()))); + expect(container.resolve(), + isNot(same(container.resolve()))); }); test('one time builders should be resolved', () { container.registerSingleton((c) => 5); - container.registerSingleton((c) => const Sith('Anakin', 'Skywalker', 'DarthVader')); - container.registerSingleton((c) => const Character('Anakin', 'Skywalker')); + container.registerSingleton( + (c) => const Sith('Anakin', 'Skywalker', 'DarthVader')); + container.registerSingleton( + (c) => const Character('Anakin', 'Skywalker')); expect(container.resolve(), 5); - expect(container.resolve(), const Sith('Anakin', 'Skywalker', 'DarthVader')); - expect(container.resolve(), const Character('Anakin', 'Skywalker')); + expect(container.resolve(), + const Sith('Anakin', 'Skywalker', 'DarthVader')); + expect(container.resolve(), + const Character('Anakin', 'Skywalker')); }); test('one time builders should be created one time only', () { @@ -239,7 +250,8 @@ void main() { ))); }); - test('Parented [KiwiContainer.scoped] should inherit global registrations', () { + test('Parented [KiwiContainer.scoped] should inherit global registrations', + () { container.registerInstance(5); container.registerInstance(6, name: 'named'); container.registerInstance(7); @@ -407,9 +419,11 @@ void main() { // Named instances expect(scoped.isRegistered(name: 'named_string_instance'), false); - scoped.registerInstance('random_string', name: 'named_string_instance'); + scoped.registerInstance('random_string', + name: 'named_string_instance'); - expect(scoped.isRegistered(), false); // [isRegistered] cannot be true if String it is named and is tested unnamed. + expect(scoped.isRegistered(), + false); // [isRegistered] cannot be true if String it is named and is tested unnamed. expect(scoped.isRegistered(name: 'named_string_instance'), true); expect(scoped.resolve('named_string_instance'), 'random_string'); diff --git a/packages/kiwi_generator/lib/src/kiwi_injector_generator.dart b/packages/kiwi_generator/lib/src/kiwi_injector_generator.dart index ca64dde..82991f6 100644 --- a/packages/kiwi_generator/lib/src/kiwi_injector_generator.dart +++ b/packages/kiwi_generator/lib/src/kiwi_injector_generator.dart @@ -13,7 +13,9 @@ import 'package:source_gen/source_gen.dart'; const TypeChecker _registerTypeChecker = TypeChecker.fromRuntime(Register); -bool _isRegisterMethod(MethodElement method) => (method.returnType is VoidType && _registerTypeChecker.hasAnnotationOfExact(method)); +bool _isRegisterMethod(MethodElement method) => + (method.returnType is VoidType && + _registerTypeChecker.hasAnnotationOfExact(method)); class KiwiInjectorGenerator extends Generator { const KiwiInjectorGenerator(); @@ -24,14 +26,20 @@ class KiwiInjectorGenerator extends Generator { // An injector is an abstract class where all abstract methods are // annotated with Register. final injectors = library.classes - .where( - (c) => c.isAbstract && c.methods.where((m) => m.isAbstract).isNotEmpty && c.methods.where((m) => m.isAbstract && _isRegisterMethod(m)).isNotEmpty) + .where((c) => + c.isAbstract && + c.methods.where((m) => m.isAbstract).isNotEmpty && + c.methods + .where((m) => m.isAbstract && _isRegisterMethod(m)) + .isNotEmpty) .toList(); if (injectors.isEmpty) { return null; } - final file = Library((lb) => lb..body.addAll(injectors.map((i) => _generateInjector(i, library, buildStep)))); + final file = Library((lb) => lb + ..body.addAll( + injectors.map((i) => _generateInjector(i, library, buildStep)))); final DartEmitter emitter = DartEmitter(allocator: Allocator()); return DartFormatter().format('${file.accept(emitter)}'); @@ -49,7 +57,8 @@ class KiwiInjectorGenerator extends Generator { } } - Class _generateInjector(ClassElement injector, LibraryReader library, BuildStep? buildStep) { + Class _generateInjector( + ClassElement injector, LibraryReader library, BuildStep? buildStep) { return Class((cb) => cb ..name = '_\$${injector.name}' ..extend = refer(injector.name) @@ -57,15 +66,22 @@ class KiwiInjectorGenerator extends Generator { } List _generateInjectorMethods(ClassElement injector) { - return injector.methods.where((m) => m.isAbstract).map((m) => _generateInjectorMethod(m)).toList(); + return injector.methods + .where((m) => m.isAbstract) + .map((m) => _generateInjectorMethod(m)) + .toList(); } Method _generateInjectorMethod(MethodElement method) { if (method.parameters.length > 1) { - throw KiwiGeneratorError('Only 1 parameter is supported `KiwiContainer scopedContainer`, ${method.name} contains ${method.parameters.length} param(s)'); + throw KiwiGeneratorError( + 'Only 1 parameter is supported `KiwiContainer scopedContainer`, ${method.name} contains ${method.parameters.length} param(s)'); } final scopedContainerParam = method.parameters.singleOrNullWhere( - (element) => element.name == 'scopedContainer' && element.type.getDisplayString(withNullability: true) == 'KiwiContainer', + (element) => + element.name == 'scopedContainer' && + element.type.getDisplayString(withNullability: true) == + 'KiwiContainer', ); return Method.returnsVoid((mb) { @@ -104,7 +120,8 @@ class KiwiInjectorGenerator extends Generator { } else { mb ..body = Block((bb) => bb - ..statements.add(Code('final KiwiContainer container = ${scopedContainer}KiwiContainer();')) + ..statements.add(Code( + 'final KiwiContainer container = ${scopedContainer}KiwiContainer();')) ..addExpression(registers)); } }); @@ -123,41 +140,54 @@ class KiwiInjectorGenerator extends Generator { ); } - Expression _generateRegister(Expression registerExpression, AnnotatedElement annotatedMethod) { + Expression _generateRegister( + Expression registerExpression, AnnotatedElement annotatedMethod) { final ConstantReader annotation = annotatedMethod.annotation; final DartObject registerObject = annotation.objectValue; final String? name = registerObject.getField('name')?.toStringValue(); final DartType? type = registerObject.getField('type')?.toTypeValue(); final DartType? concrete = registerObject.getField('from')?.toTypeValue(); - final String? constructorName = registerObject.getField('constructorName')?.toStringValue(); + final String? constructorName = + registerObject.getField('constructorName')?.toStringValue(); final DartType? concreteType = concrete ?? type; // TODO: Implement null type check if (concreteType == null) { - throw KiwiGeneratorError('null can not be registered because there is no type for null'); + throw KiwiGeneratorError( + 'null can not be registered because there is no type for null'); } - final String className = concreteType.getDisplayString(withNullability: false); - final String typeParameters = concrete == null ? '' : '<${type?.getDisplayString(withNullability: false)}>'; + final String className = + concreteType.getDisplayString(withNullability: false); + final String typeParameters = concrete == null + ? '' + : '<${type?.getDisplayString(withNullability: false)}>'; final String nameArgument = name == null ? '' : ", name: '$name'"; - final String constructorNameArgument = constructorName == null ? '' : '.$constructorName'; + final String constructorNameArgument = + constructorName == null ? '' : '.$constructorName'; - final ClassElement? clazz = concreteType.element?.library?.getClass(className); + final ClassElement? clazz = + concreteType.element?.library?.getClass(className); if (clazz == null) { throw KiwiGeneratorError('$className not found'); } - final bool oneTime = registerObject.getField('oneTime')?.toBoolValue() ?? false; - final Map? resolvers = _computeResolvers(registerObject.getField('resolvers')?.toMapValue()); + final bool oneTime = + registerObject.getField('oneTime')?.toBoolValue() ?? false; + final Map? resolvers = + _computeResolvers(registerObject.getField('resolvers')?.toMapValue()); final String methodSuffix = oneTime ? 'Singleton' : 'Factory'; - final constructor = constructorName == null ? clazz.unnamedConstructor : clazz.getNamedConstructor(constructorName); + final constructor = constructorName == null + ? clazz.unnamedConstructor + : clazz.getNamedConstructor(constructorName); if (constructor == null) { - throw KiwiGeneratorError('the constructor ${clazz.name}.$constructorName does not exist'); + throw KiwiGeneratorError( + 'the constructor ${clazz.name}.$constructorName does not exist'); } final String factoryParameters = _generateRegisterArguments( @@ -165,14 +195,17 @@ class KiwiInjectorGenerator extends Generator { resolvers, ).join(', '); - return registerExpression.cascade('register$methodSuffix$typeParameters((c) => $className$constructorNameArgument($factoryParameters)$nameArgument)'); + return registerExpression.cascade( + 'register$methodSuffix$typeParameters((c) => $className$constructorNameArgument($factoryParameters)$nameArgument)'); } List _generateRegisterArguments( ConstructorElement constructor, Map? resolvers, ) { - return constructor.parameters.map((p) => _generateRegisterArgument(p, resolvers)).toList(); + return constructor.parameters + .map((p) => _generateRegisterArgument(p, resolvers)) + .toList(); } String _generateRegisterArgument( @@ -182,17 +215,22 @@ class KiwiInjectorGenerator extends Generator { final List dartTypes = resolvers == null ? [] : resolvers.keys - .where((e) => e?.getDisplayString(withNullability: false) == parameter.type.getDisplayString(withNullability: false)) + .where((e) => + e?.getDisplayString(withNullability: false) == + parameter.type.getDisplayString(withNullability: false)) .where((e) => e != null) .map((e) => e!) .toList(); - final String nameArgument = dartTypes.isEmpty || resolvers == null ? '' : "'${resolvers[dartTypes.first]}'"; + final String nameArgument = dartTypes.isEmpty || resolvers == null + ? '' + : "'${resolvers[dartTypes.first]}'"; return '${parameter.isNamed ? parameter.name + ': ' : ''}c.resolve<${parameter.type.getDisplayString(withNullability: false)}>($nameArgument)'; } Map? _computeResolvers( Map? resolvers, ) { - return resolvers?.map((key, value) => MapEntry(key?.toTypeValue(), value?.toStringValue())); + return resolvers?.map((key, value) => MapEntry( + key?.toTypeValue(), value?.toStringValue())); } } diff --git a/packages/kiwi_generator/lib/src/model/kiwi_generator_error.dart b/packages/kiwi_generator/lib/src/model/kiwi_generator_error.dart index 6f0140f..5d12461 100644 --- a/packages/kiwi_generator/lib/src/model/kiwi_generator_error.dart +++ b/packages/kiwi_generator/lib/src/model/kiwi_generator_error.dart @@ -12,7 +12,8 @@ class KiwiGeneratorError extends Error { var toString = '\nKiwiGeneratorError\n\n$message\n\n'; final internalError = error; if (internalError != null) { - toString += '============\n${internalError.toString()}\n${internalError.stackTrace}\n============\n\n'; + toString += + '============\n${internalError.toString()}\n${internalError.stackTrace}\n============\n\n'; } return toString; } diff --git a/packages/kiwi_generator/pubspec.yaml b/packages/kiwi_generator/pubspec.yaml index 792df8a..81d39a3 100644 --- a/packages/kiwi_generator/pubspec.yaml +++ b/packages/kiwi_generator/pubspec.yaml @@ -9,7 +9,7 @@ environment: sdk: '>=2.14.0 <4.0.0' dependencies: - analyzer: ">=6.0.0 <7.0.0" + analyzer: ^6.0.0 build: ^2.4.1 build_config: ^1.1.1 built_collection: ^5.1.1 diff --git a/tools/all.sh b/tools/all.sh index 7c968b7..c850235 100644 --- a/tools/all.sh +++ b/tools/all.sh @@ -2,6 +2,7 @@ ./packages_get.sh ./analyze.sh +./fix.sh ./format.sh ./test.sh ./build.sh diff --git a/tools/fix.sh b/tools/fix.sh new file mode 100644 index 0000000..a93436b --- /dev/null +++ b/tools/fix.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +CURRENT=`pwd` +DIR_NAME=`basename "$CURRENT"` +if [ $DIR_NAME == 'tools' ] +then + cd .. +fi + +echo "" +echo "dart_kiwi example package fix lib" +cd examples/dart_kiwi +dart fix --apply +cd ../.. + +echo "" +echo "flutter_kiwi example package fix lib" +cd examples/flutter_kiwi +dart fix --apply +cd ../.. + +echo "" +echo "kiwi final package fix lib" +cd packages/kiwi +dart fix --apply +cd ../.. + +echo "" +echo "kiwi_generator final package fix lib" +cd packages/kiwi_generator +dart fix --apply \ No newline at end of file diff --git a/tools/format.sh b/tools/format.sh index b45b60a..bdc3122 100644 --- a/tools/format.sh +++ b/tools/format.sh @@ -10,22 +10,22 @@ fi echo "" echo "dart_kiwi example package format lib" cd examples/dart_kiwi -dart format -o none --set-exit-if-changed . +dart format . cd ../.. echo "" echo "flutter_kiwi example package format lib" cd examples/flutter_kiwi -dart format -o none --set-exit-if-changed . +dart format . cd ../.. echo "" echo "kiwi final package format lib" cd packages/kiwi -dart format -o none --set-exit-if-changed . +dart format . cd ../.. echo "" echo "kiwi_generator final package format lib" cd packages/kiwi_generator -dart format -o none --set-exit-if-changed . \ No newline at end of file +dart format . \ No newline at end of file