Skip to content

Commit 798afc9

Browse files
Merge pull request #141 from icapps/feature/#140-made-model-gen-more-verbose
#140: added realtime buildrunner logging
2 parents 8feb918 + 6bead83 commit 798afc9

File tree

3 files changed

+50
-31
lines changed

3 files changed

+50
-31
lines changed

CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Changelog
22
## [7.0.0] - 2023-08-14
3-
*BREAKING CHANGE*: Every type is now defined inline, this means that 'required' is no longer supported, if a field isn't nullable it is automatically required. This also means that the 'array' type is no longer supported and is instead just defined like 'List<T>'.
3+
- *BREAKING CHANGE*: Every type is now defined inline, this means that 'required' is no longer supported, if a field isn't nullable it is automatically required. This also means that the 'array' type is no longer supported and is instead just defined like 'List<T>'.
4+
- Logs of build runner now get shown in real time.
45

56
## [6.3.0] - 2023-06-05
67
- Fixed the deprecated `ignore` field. Added

bin/model_generator.dart

+18-30
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'dart:async';
12
import 'dart:io';
23

34
import 'package:args/args.dart';
@@ -8,6 +9,7 @@ import 'package:model_generator/model/model/custom_model.dart';
89
import 'package:model_generator/model/model/enum_model.dart';
910
import 'package:model_generator/model/model/json_converter_model.dart';
1011
import 'package:model_generator/model/model/object_model.dart';
12+
import 'package:model_generator/run_process/run_process.dart';
1113
import 'package:model_generator/util/list_extensions.dart';
1214
import 'package:model_generator/writer/enum_model_writer.dart';
1315
import 'package:model_generator/writer/object_model_writer.dart';
@@ -140,34 +142,20 @@ void writeToFiles(
140142
}
141143

142144
Future<void> generateJsonGeneratedModels({required bool useFvm}) async {
143-
ProcessResult result;
144-
if (useFvm) {
145-
result = Process.runSync('fvm', [
146-
'flutter',
147-
'packages',
148-
'pub',
149-
'run',
150-
'build_runner',
151-
'build',
152-
'--delete-conflicting-outputs',
153-
]);
154-
} else {
155-
result = Process.runSync('flutter', [
156-
'packages',
157-
'pub',
158-
'run',
159-
'build_runner',
160-
'build',
161-
'--delete-conflicting-outputs',
162-
]);
163-
}
164-
if (result.exitCode == 0) {
165-
print('Successfully generated the jsonSerializable generated files');
166-
print('');
167-
} else {
168-
print(
169-
'Failed to run `${useFvm ? 'fvm ' : ''}flutter packages pub run build_runner build --delete-conflicting-outputs`');
170-
print('StdErr: ${result.stderr}');
171-
print('StdOut: ${result.stdout}');
172-
}
145+
final arguments = [
146+
if (useFvm) ...[
147+
'fvm',
148+
],
149+
'flutter',
150+
'packages',
151+
'pub',
152+
'run',
153+
'build_runner',
154+
'build',
155+
'--delete-conflicting-outputs',
156+
];
157+
await ProcessRunner.runProcessVerbose(
158+
arguments.first,
159+
arguments.skip(1).toList(),
160+
);
173161
}

lib/run_process/run_process.dart

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import 'dart:async';
2+
import 'dart:convert';
3+
import 'dart:io';
4+
5+
class ProcessRunner {
6+
ProcessRunner._();
7+
8+
static Future<void> runProcessVerbose(
9+
String command, List<String> args) async {
10+
print('\n$command ${args.join(' ')}\n');
11+
final completer = Completer<void>();
12+
final result = await Process.start(
13+
command,
14+
args,
15+
mode: ProcessStartMode.detachedWithStdio,
16+
);
17+
print(
18+
'======================================================================');
19+
final subscription = result.stdout
20+
.listen((codeUnits) => stdout.write(utf8.decode(codeUnits)));
21+
subscription.onDone(() {
22+
print(
23+
'======================================================================');
24+
completer.complete();
25+
});
26+
subscription.onError((dynamic error) =>
27+
completer.completeError('Failed to complete process run: $error'));
28+
return completer.future;
29+
}
30+
}

0 commit comments

Comments
 (0)