From e1032c48bd7a20b4773bda8a8f5d370ba763290f Mon Sep 17 00:00:00 2001 From: wasabeef Date: Mon, 23 May 2022 18:13:38 +0900 Subject: [PATCH 1/3] chore: upgrade sdk versions --- .vscode/settings.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 3b8f7f7c5..ecd7b6613 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,4 @@ { - "dart.flutterSdkPath": "~/.asdf/installs/flutter/2.5.3-stable", - "dart.sdkPath": "~/.asdf/installs/dart/2.14.4/dart-sdk" + "dart.flutterSdkPath": "~/.asdf/installs/flutter/3.0.1-stable", + "dart.sdkPath": "~/.asdf/installs/dart/2.17.1/dart-sdk" } From d10280f91433bd582079ccd92b382c7454f163dd Mon Sep 17 00:00:00 2001 From: wasabeef Date: Mon, 23 May 2022 18:13:56 +0900 Subject: [PATCH 2/3] chore: update sample codes --- example/pubspec.yaml | 5 +++++ example_resources/assets/color/colors.xml | 7 ++++++ example_resources/lib/gen/colors.gen.dart | 27 +++++++++++++++++++++++ example_resources/pubspec.yaml | 9 ++++++++ 4 files changed, 48 insertions(+) create mode 100644 example_resources/assets/color/colors.xml create mode 100644 example_resources/lib/gen/colors.gen.dart diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 11106d6e1..6f8e614a3 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -17,6 +17,11 @@ dependencies: flare_flutter: ^3.0.2 rive: ^0.8.1 + # Dependency check + collection: ^1.15.0 + crypto: ^3.0.0 + glob: ^2.0.0 + json_annotation: ^4.5.0 freezed_annotation: ^2.0.3 diff --git a/example_resources/assets/color/colors.xml b/example_resources/assets/color/colors.xml new file mode 100644 index 000000000..506295538 --- /dev/null +++ b/example_resources/assets/color/colors.xml @@ -0,0 +1,7 @@ + + + #FFFFFF + #000000 + #EEEEEE + #979797 + diff --git a/example_resources/lib/gen/colors.gen.dart b/example_resources/lib/gen/colors.gen.dart new file mode 100644 index 000000000..e1632ca34 --- /dev/null +++ b/example_resources/lib/gen/colors.gen.dart @@ -0,0 +1,27 @@ +/// GENERATED CODE - DO NOT MODIFY BY HAND +/// ***************************************************** +/// FlutterGen +/// ***************************************************** + +// coverage:ignore-file +// ignore_for_file: type=lint +// ignore_for_file: directives_ordering,unnecessary_import + +import 'package:flutter/painting.dart'; +import 'package:flutter/material.dart'; + +class ColorName { + ColorName._(); + + /// Color: #000000 + static const Color black = Color(0xFF000000); + + /// Color: #979797 + static const Color gray410 = Color(0xFF979797); + + /// Color: #EEEEEE + static const Color gray70 = Color(0xFFEEEEEE); + + /// Color: #FFFFFF + static const Color white = Color(0xFFFFFFFF); +} diff --git a/example_resources/pubspec.yaml b/example_resources/pubspec.yaml index 02e8fed82..6ed913e7d 100644 --- a/example_resources/pubspec.yaml +++ b/example_resources/pubspec.yaml @@ -30,6 +30,15 @@ flutter_gen: enabled: true package_parameter_enabled: true + fonts: + enabled: true + + colors: + enabled: true + inputs: + - assets/color/colors.xml + + flutter: assets: - assets/images/ From 0681396f851ccebc8fb1fa7584270b73c4b6b2ec Mon Sep 17 00:00:00 2001 From: wasabeef Date: Mon, 23 May 2022 18:14:20 +0900 Subject: [PATCH 3/3] refactor: delete unneeded files --- packages/core/lib/flutter_generator.dart | 4 - packages/core/lib/settings/config.dart | 3 +- packages/runner/lib/flutter_gen_builder.dart | 83 -------------------- packages/runner/lib/flutter_gen_runner.dart | 81 ++++++++++++++++++- packages/runner/pubspec.yaml | 3 +- 5 files changed, 81 insertions(+), 93 deletions(-) delete mode 100644 packages/runner/lib/flutter_gen_builder.dart diff --git a/packages/core/lib/flutter_generator.dart b/packages/core/lib/flutter_generator.dart index d57c4fe23..8ff32d5f5 100644 --- a/packages/core/lib/flutter_generator.dart +++ b/packages/core/lib/flutter_generator.dart @@ -1,7 +1,6 @@ import 'dart:io'; import 'package:dart_style/dart_style.dart'; -import 'package:flutter_gen_core/utils/version.dart'; import 'package:path/path.dart'; import 'generators/assets_generator.dart'; @@ -41,10 +40,7 @@ class FlutterGenerator { } Future build({Config? config}) async { - stdout.writeln(flutterGenVersion); - config ??= await getConfig(); - if (config == null) return; final flutter = config.pubspec.flutter; diff --git a/packages/core/lib/settings/config.dart b/packages/core/lib/settings/config.dart index 9ceb92f54..1b5cb9cfc 100644 --- a/packages/core/lib/settings/config.dart +++ b/packages/core/lib/settings/config.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:flutter_gen_core/utils/version.dart'; import 'package:path/path.dart'; import 'package:yaml/yaml.dart'; @@ -14,7 +15,7 @@ class Config { } Future loadPubspecConfig(File pubspecFile) async { - stdout.writeln('FlutterGen Loading ... ' + stdout.writeln('$flutterGenVersion Loading ... ' '${normalize(join( basename(pubspecFile.parent.path), basename(pubspecFile.path), diff --git a/packages/runner/lib/flutter_gen_builder.dart b/packages/runner/lib/flutter_gen_builder.dart deleted file mode 100644 index 1aa619cec..000000000 --- a/packages/runner/lib/flutter_gen_builder.dart +++ /dev/null @@ -1,83 +0,0 @@ -import 'dart:async'; -import 'dart:collection'; -import 'dart:io'; - -import 'package:build/build.dart'; -import 'package:collection/collection.dart'; -import 'package:crypto/crypto.dart'; -import 'package:flutter_gen_core/flutter_generator.dart'; -import 'package:flutter_gen_core/settings/config.dart'; -import 'package:glob/glob.dart'; - -class FlutterGenBuilder extends Builder { - final FlutterGenerator generator = FlutterGenerator(File('pubspec.yaml')); - _FlutterGenBuilderState? _currentState; - - @override - Future build(BuildStep buildStep) async { - var config = await generator.getConfig(); - - if (config == null) return; - - var state = await _createState(config, buildStep); - - if (_currentState != null && _currentState!.equals(state)) return; - - _currentState = state; - - await generator.build(config: config); - } - - @override - Map> get buildExtensions => { - "\$package\$": ['.gen.dart'] - }; - - Future<_FlutterGenBuilderState> _createState( - Config config, BuildStep buildStep) async { - final pubspec = config.pubspec; - final HashMap colors = HashMap(); - final HashSet assets = HashSet(); - - if (pubspec.flutterGen.colors.enabled) { - for (var colorInput in pubspec.flutterGen.colors.inputs) { - if (colorInput.isEmpty) continue; - await for (var assetId in buildStep.findAssets(Glob(colorInput))) { - var digest = await buildStep.digest(assetId); - colors[assetId.path] = digest; - } - } - } - - if (pubspec.flutterGen.assets.enabled) { - for (var assetInput in pubspec.flutter.assets) { - if (assetInput.isEmpty) continue; - if (assetInput.endsWith("/")) assetInput += "*"; - await for (var assetId in buildStep.findAssets(Glob(assetInput))) { - assets.add(assetId.path); - } - } - } - - final pubspecAsset = - await buildStep.findAssets(Glob(config.pubspecFile.path)).single; - - final pubspecDigest = await buildStep.digest(pubspecAsset); - - return _FlutterGenBuilderState(pubspecDigest, colors, assets); - } -} - -class _FlutterGenBuilderState { - final Digest pubspecDigest; - final HashMap colors; - final HashSet assets; - - _FlutterGenBuilderState(this.pubspecDigest, this.colors, this.assets); - - bool equals(_FlutterGenBuilderState state) { - return pubspecDigest == state.pubspecDigest && - const MapEquality().equals(colors, state.colors) && - const SetEquality().equals(assets, state.assets); - } -} diff --git a/packages/runner/lib/flutter_gen_runner.dart b/packages/runner/lib/flutter_gen_runner.dart index d6cefc1f8..130054673 100644 --- a/packages/runner/lib/flutter_gen_runner.dart +++ b/packages/runner/lib/flutter_gen_runner.dart @@ -1,7 +1,82 @@ +import 'dart:collection'; +import 'dart:io'; + import 'package:build/build.dart'; +import 'package:collection/collection.dart'; +import 'package:crypto/crypto.dart'; +import 'package:flutter_gen_core/flutter_generator.dart'; +import 'package:flutter_gen_core/settings/config.dart'; + +import 'package:glob/glob.dart'; + +Builder build(BuilderOptions options) => FlutterGenBuilder(); + +class FlutterGenBuilder extends Builder { + final FlutterGenerator generator = FlutterGenerator(File('pubspec.yaml')); + _FlutterGenBuilderState? _currentState; + + @override + Future build(BuildStep buildStep) async { + final config = await generator.getConfig(); + if (config == null) return; + + final state = await _createState(config, buildStep); + if (_currentState != null && _currentState!.equals(state)) return; + _currentState = state; + + await generator.build(config: config); + } + + @override + Map> get buildExtensions => { + "\$package\$": ['.gen.dart'] + }; + + Future<_FlutterGenBuilderState> _createState( + Config config, BuildStep buildStep) async { + final pubspec = config.pubspec; + + final HashSet assets = HashSet(); + if (pubspec.flutterGen.assets.enabled) { + for (var assetInput in pubspec.flutter.assets) { + if (assetInput.isEmpty) continue; + if (assetInput.endsWith("/")) assetInput += "*"; + await for (var assetId in buildStep.findAssets(Glob(assetInput))) { + assets.add(assetId.path); + } + } + } + + final HashMap colors = HashMap(); + if (pubspec.flutterGen.colors.enabled) { + for (var colorInput in pubspec.flutterGen.colors.inputs) { + if (colorInput.isEmpty) continue; + await for (var assetId in buildStep.findAssets(Glob(colorInput))) { + final digest = await buildStep.digest(assetId); + colors[assetId.path] = digest; + } + } + } + + final pubspecAsset = + await buildStep.findAssets(Glob(config.pubspecFile.path)).single; + + final pubspecDigest = await buildStep.digest(pubspecAsset); + + return _FlutterGenBuilderState(pubspecDigest, assets, colors); + } +} + +class _FlutterGenBuilderState { + final Digest pubspecDigest; + final HashSet assets; + final HashMap colors; -import 'flutter_gen_builder.dart'; + _FlutterGenBuilderState(this.pubspecDigest, this.assets, this.colors); -Builder build(BuilderOptions options) { - return FlutterGenBuilder(); + bool equals(_FlutterGenBuilderState state) { + return pubspecDigest == state.pubspecDigest && + const SetEquality().equals(assets, state.assets) && + const MapEquality().equals(colors, state.colors); + } } diff --git a/packages/runner/pubspec.yaml b/packages/runner/pubspec.yaml index deacb364e..263bf671c 100644 --- a/packages/runner/pubspec.yaml +++ b/packages/runner/pubspec.yaml @@ -13,11 +13,10 @@ environment: dependencies: flutter_gen_core: ^4.1.6 build: '>=2.0.0 <3.0.0' - collection: ^1.15.0 + collection: ^1.16.0 crypto: ^3.0.2 glob: ^2.0.2 dev_dependencies: flutter_lints: ^2.0.1 build_test: '>=2.0.0 <3.0.0' - flutter_lints: '>=1.0.4 <2.0.0'