Skip to content

Commit 12ea28d

Browse files
authored
⚡️ Use fine-grained logger instead of stdout.writeln (#694)
## What does this change? Fixes #693 This PR also deletes the deprecation header. And added test configurations to let tests run with `concurrency=1`.
1 parent 675eb2e commit 12ea28d

23 files changed

+160
-94
lines changed

examples/example/example.iml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
<excludeFolder url="file://$MODULE_DIR$/build" />
1212
<excludeFolder url="file://$MODULE_DIR$/android/.gradle" />
1313
<excludeFolder url="file://$MODULE_DIR$/android/.idea" />
14-
<excludeFolder url="file://$MODULE_DIR$/ios/Flutter" />
14+
<excludeFolder url="file://$MODULE_DIR$/ios/Flutter/ephemeral" />
1515
<excludeFolder url="file://$MODULE_DIR$/ios/Pods" />
1616
<excludeFolder url="file://$MODULE_DIR$/ios/.symlinks" />
17-
<excludeFolder url="file://$MODULE_DIR$/macos/Flutter" />
17+
<excludeFolder url="file://$MODULE_DIR$/macos/Flutter/ephemeral" />
1818
<excludeFolder url="file://$MODULE_DIR$/macos/Pods" />
1919
<excludeFolder url="file://$MODULE_DIR$/macos/.symlinks" />
2020
</content>
@@ -23,4 +23,4 @@
2323
<orderEntry type="library" name="Flutter Plugins" level="project" />
2424
<orderEntry type="library" name="Dart Packages" level="project" />
2525
</component>
26-
</module>
26+
</module>

examples/example/ios/.gitignore

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
**/dgph
2+
*.mode1v3
3+
*.mode2v3
4+
*.moved-aside
5+
*.pbxuser
6+
*.perspectivev3
7+
**/*sync/
8+
.sconsign.dblite
9+
.tags*
10+
**/.vagrant/
11+
**/DerivedData/
12+
Icon?
13+
**/Pods/
14+
**/.symlinks/
15+
profile
16+
xcuserdata
17+
**/.generated/
18+
Flutter/App.framework
19+
Flutter/Flutter.framework
20+
Flutter/Flutter.podspec
21+
Flutter/Generated.xcconfig
22+
Flutter/ephemeral/
23+
Flutter/app.flx
24+
Flutter/app.zip
25+
Flutter/flutter_assets/
26+
Flutter/flutter_export_environment.sh
27+
ServiceDefinitions.json
28+
Runner/GeneratedPluginRegistrant.*
29+
30+
# Exceptions to above rules.
31+
!default.mode1v3
32+
!default.mode2v3
33+
!default.pbxuser
34+
!default.perspectivev3

examples/example/ios/Flutter/AppFrameworkInfo.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@
2121
<key>CFBundleVersion</key>
2222
<string>1.0</string>
2323
<key>MinimumOSVersion</key>
24-
<string>11.0</string>
24+
<string>12.0</string>
2525
</dict>
2626
</plist>

examples/example/macos/.gitignore

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
**/dgph
2+
*.mode1v3
3+
*.mode2v3
4+
*.moved-aside
5+
*.pbxuser
6+
*.perspectivev3
7+
**/*sync/
8+
.sconsign.dblite
9+
.tags*
10+
**/.vagrant/
11+
**/DerivedData/
12+
Icon?
13+
**/Pods/
14+
**/.symlinks/
15+
profile
16+
xcuserdata
17+
**/.generated/
18+
Flutter/App.framework
19+
Flutter/Flutter.framework
20+
Flutter/Flutter.podspec
21+
Flutter/Generated.xcconfig
22+
Flutter/ephemeral/
23+
Flutter/app.flx
24+
Flutter/app.zip
25+
Flutter/flutter_assets/
26+
Flutter/flutter_export_environment.sh
27+
ServiceDefinitions.json
28+
Runner/GeneratedPluginRegistrant.*
29+
30+
# Exceptions to above rules.
31+
!default.mode1v3
32+
!default.mode2v3
33+
!default.pbxuser
34+
!default.perspectivev3

packages/command/bin/flutter_gen_command.dart

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,20 @@ import 'dart:io';
22

33
import 'package:args/args.dart';
44
import 'package:flutter_gen_core/flutter_generator.dart';
5-
import 'package:flutter_gen_core/utils/cast.dart';
6-
import 'package:flutter_gen_core/utils/error.dart';
7-
import 'package:flutter_gen_core/version.gen.dart';
5+
import 'package:flutter_gen_core/utils/cast.dart' show safeCast;
6+
import 'package:flutter_gen_core/utils/log.dart' show log;
7+
import 'package:flutter_gen_core/version.gen.dart' show packageVersion;
8+
import 'package:logging/logging.dart' show Level;
89

910
void main(List<String> args) async {
11+
log.onRecord.listen((record) {
12+
if (record.level >= Level.WARNING) {
13+
stderr.writeln('[FlutterGen] [${record.level.name}] ${record.message}');
14+
} else {
15+
stdout.writeln('[FlutterGen] ${record.message}');
16+
}
17+
});
18+
1019
final parser = ArgParser();
1120
parser.addOption(
1221
'config',
@@ -39,18 +48,14 @@ void main(List<String> args) async {
3948
try {
4049
results = parser.parse(args);
4150
if (results.wasParsed('help')) {
42-
stdout.writeln(parser.usage);
51+
log.info('Usage of the `fluttergen` command:\n${parser.usage}');
4352
return;
4453
} else if (results.wasParsed('version')) {
45-
stdout.writeln('[FlutterGen] v$packageVersion');
54+
log.info('v$packageVersion');
4655
return;
4756
}
4857
} on FormatException catch (e) {
49-
stderr.writeAll(
50-
<String>[e.message, 'usage: flutter_gen [options...]', ''],
51-
'\n',
52-
);
53-
return;
58+
throw '$e\n\n${parser.usage}';
5459
}
5560

5661
final pubspecPath = safeCast<String>(results['config']);
@@ -65,9 +70,5 @@ void main(List<String> args) async {
6570
}
6671
final buildFile = buildPath == null ? null : File(buildPath).absolute;
6772

68-
try {
69-
await FlutterGenerator(pubspecFile, buildFile: buildFile).build();
70-
} on InvalidSettingsException catch (e) {
71-
stderr.write(e.message);
72-
}
73+
await FlutterGenerator(pubspecFile, buildFile: buildFile).build();
7374
}

packages/command/dart_test.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
concurrency: 1

packages/command/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ executables:
1515
dependencies:
1616
flutter_gen_core: 5.10.0
1717
args: ^2.0.0
18+
logging: ^1.3.0
1819

1920
dev_dependencies:
2021
lints: any # Ignoring the version to allow editing across SDK versions.

packages/command/test/flutter_gen_command_test.dart

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'dart:io' show Platform;
22

3-
import 'package:flutter_gen_core/generators/generator_helper.dart' as helper;
43
import 'package:flutter_gen_core/version.gen.dart';
54
import 'package:test/test.dart';
65
import 'package:test_process/test_process.dart';
@@ -37,6 +36,10 @@ void main() {
3736
'dart',
3837
['bin/flutter_gen_command.dart', '--help'],
3938
);
39+
expect(
40+
await process.stdout.next,
41+
equals('[FlutterGen] Usage of the `fluttergen` command:'),
42+
);
4043
expect(
4144
await process.stdout.next,
4245
equals('-c, --config Set the path of pubspec.yaml.'),
@@ -62,13 +65,13 @@ void main() {
6265
);
6366
expect(
6467
await process.stderr.next,
65-
equals('Could not find an option named "--wrong".'),
68+
equals('Unhandled exception:'),
6669
);
6770
expect(
6871
await process.stderr.next,
69-
equals('usage: flutter_gen [options...]'),
72+
equals('FormatException: Could not find an option named "--wrong".'),
7073
);
71-
await process.shouldExit(0);
74+
await process.shouldExit(255);
7275
});
7376

7477
test('Execute deprecated config with fluttergen', () async {
@@ -80,10 +83,17 @@ void main() {
8083
'test/deprecated_configs.yaml',
8184
],
8285
);
83-
final errors = (await process.stderr.rest.toList()).join('\n');
84-
expect(errors, contains(helper.sDeprecationHeader));
85-
expect(errors, contains('style'));
86-
expect(errors, contains('package_parameter_enabled'));
87-
await process.shouldExit(0);
86+
expect(
87+
await process.stderr.next,
88+
equals('Unhandled exception:'),
89+
);
90+
expect(
91+
await process.stderr.next,
92+
startsWith('InvalidSettingsException: '),
93+
);
94+
final rest = (await process.stderr.rest.toList()).join('\n');
95+
expect(rest, contains('style'));
96+
expect(rest, contains('package_parameter_enabled'));
97+
await process.shouldExit(255);
8898
});
8999
}

packages/core/dart_test.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
concurrency: 1

packages/core/lib/flutter_generator.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import 'dart:io' show stdout, Directory, File;
1+
import 'dart:io' show Directory, File;
22

33
import 'package:flutter_gen_core/generators/assets_generator.dart';
44
import 'package:flutter_gen_core/generators/colors_generator.dart';
55
import 'package:flutter_gen_core/generators/fonts_generator.dart';
66
import 'package:flutter_gen_core/settings/config.dart';
77
import 'package:flutter_gen_core/utils/file.dart';
88
import 'package:flutter_gen_core/utils/formatter.dart';
9+
import 'package:flutter_gen_core/utils/log.dart';
910
import 'package:path/path.dart' show join, normalize;
1011

1112
class FlutterGenerator {
@@ -60,7 +61,7 @@ class FlutterGenerator {
6061
);
6162
final assetsPath = normalize(join(absoluteOutput.path, assetsName));
6263
writer(generated, assetsPath);
63-
stdout.writeln('[FlutterGen] Generated: $assetsPath');
64+
log.info('Generated: $assetsPath');
6465
}
6566

6667
if (flutterGen.colors.enabled && flutterGen.colors.inputs.isNotEmpty) {
@@ -71,7 +72,7 @@ class FlutterGenerator {
7172
);
7273
final colorsPath = normalize(join(absoluteOutput.path, colorsName));
7374
writer(generated, colorsPath);
74-
stdout.writeln('[FlutterGen] Generated: $colorsPath');
75+
log.info('Generated: $colorsPath');
7576
}
7677

7778
if (flutterGen.fonts.enabled && flutter.fonts.isNotEmpty) {
@@ -81,9 +82,9 @@ class FlutterGenerator {
8182
);
8283
final fontsPath = normalize(join(absoluteOutput.path, fontsName));
8384
writer(generated, fontsPath);
84-
stdout.writeln('[FlutterGen] Generated: $fontsPath');
85+
log.info('Generated: $fontsPath');
8586
}
8687

87-
stdout.writeln('[FlutterGen] Finished generating.');
88+
log.info('Finished generating.');
8889
}
8990
}

0 commit comments

Comments
 (0)