From 1f091000557acde5a7faac9c754c43e0d8c63527 Mon Sep 17 00:00:00 2001 From: Jordy De Jonghe Date: Thu, 24 Aug 2023 15:32:39 +0200 Subject: [PATCH 1/3] #140: added realtime buildrunner logging --- CHANGELOG.md | 3 +- bin/model_generator.dart | 70 +++++++++++++++++++++++----------------- 2 files changed, 42 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cd58fc..13be6ba 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changelog ## [7.0.0] - 2023-08-14 -*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'. +- *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'. +- Logs of build runner now get shown in real time. ## [6.3.0] - 2023-06-05 - Fixed the deprecated `ignore` field. Added diff --git a/bin/model_generator.dart b/bin/model_generator.dart index 19aac2b..417f8d2 100644 --- a/bin/model_generator.dart +++ b/bin/model_generator.dart @@ -1,3 +1,5 @@ +import 'dart:async'; +import 'dart:convert'; import 'dart:io'; import 'package:args/args.dart'; @@ -139,35 +141,43 @@ void writeToFiles( } } -Future generateJsonGeneratedModels({required bool useFvm}) async { - ProcessResult result; - if (useFvm) { - result = Process.runSync('fvm', [ - 'flutter', - 'packages', - 'pub', - 'run', - 'build_runner', - 'build', - '--delete-conflicting-outputs', - ]); - } else { - result = Process.runSync('flutter', [ - 'packages', - 'pub', - 'run', - 'build_runner', - 'build', - '--delete-conflicting-outputs', - ]); - } - if (result.exitCode == 0) { - print('Successfully generated the jsonSerializable generated files'); - print(''); - } else { +Future _runProcess(String command, List args) async { + print('\n$command ${args.join(' ')}\n'); + final completer = Completer(); + final result = await Process.start( + command, + args, + mode: ProcessStartMode.detachedWithStdio, + ); + print( + '======================================================================'); + final subscription = + result.stdout.listen((codeUnits) => stdout.write(utf8.decode(codeUnits))); + subscription.onDone(() { print( - 'Failed to run `${useFvm ? 'fvm ' : ''}flutter packages pub run build_runner build --delete-conflicting-outputs`'); - print('StdErr: ${result.stderr}'); - print('StdOut: ${result.stdout}'); - } + '======================================================================'); + completer.complete(result); + }); + subscription.onError((dynamic error) => + completer.completeError('Failed to complete process run: $error')); + return completer.future; +} + +Future generateJsonGeneratedModels({required bool useFvm}) async { + final arguments = [ + if (useFvm) ...[ + 'fvm', + ], + 'flutter', + 'packages', + 'pub', + 'run', + 'build_runner', + 'build', + '--delete-conflicting-outputs', + ]; + await _runProcess( + arguments.first, + arguments.skip(1).toList(), + ); } From 61f91bd38a45e33941937dd27525fc6b91e091c0 Mon Sep 17 00:00:00 2001 From: Jordy De Jonghe Date: Thu, 24 Aug 2023 15:35:45 +0200 Subject: [PATCH 2/3] #140: fixed unused return --- bin/model_generator.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/model_generator.dart b/bin/model_generator.dart index 417f8d2..716dd42 100644 --- a/bin/model_generator.dart +++ b/bin/model_generator.dart @@ -141,9 +141,9 @@ void writeToFiles( } } -Future _runProcess(String command, List args) async { +Future _runProcess(String command, List args) async { print('\n$command ${args.join(' ')}\n'); - final completer = Completer(); + final completer = Completer(); final result = await Process.start( command, args, @@ -156,7 +156,7 @@ Future _runProcess(String command, List args) async { subscription.onDone(() { print( '======================================================================'); - completer.complete(result); + completer.complete(); }); subscription.onError((dynamic error) => completer.completeError('Failed to complete process run: $error')); From c7fa4074639ea0c18b6bc1e49a200ebd8c414f58 Mon Sep 17 00:00:00 2001 From: Jordy De Jonghe Date: Wed, 30 Aug 2023 10:54:22 +0200 Subject: [PATCH 3/3] #140: implemented PR feedback --- bin/model_generator.dart | 26 ++------------------------ lib/run_process/run_process.dart | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 lib/run_process/run_process.dart diff --git a/bin/model_generator.dart b/bin/model_generator.dart index 716dd42..8ec3857 100644 --- a/bin/model_generator.dart +++ b/bin/model_generator.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'dart:convert'; import 'dart:io'; import 'package:args/args.dart'; @@ -10,6 +9,7 @@ import 'package:model_generator/model/model/custom_model.dart'; import 'package:model_generator/model/model/enum_model.dart'; import 'package:model_generator/model/model/json_converter_model.dart'; import 'package:model_generator/model/model/object_model.dart'; +import 'package:model_generator/run_process/run_process.dart'; import 'package:model_generator/util/list_extensions.dart'; import 'package:model_generator/writer/enum_model_writer.dart'; import 'package:model_generator/writer/object_model_writer.dart'; @@ -141,28 +141,6 @@ void writeToFiles( } } -Future _runProcess(String command, List args) async { - print('\n$command ${args.join(' ')}\n'); - final completer = Completer(); - final result = await Process.start( - command, - args, - mode: ProcessStartMode.detachedWithStdio, - ); - print( - '======================================================================'); - final subscription = - result.stdout.listen((codeUnits) => stdout.write(utf8.decode(codeUnits))); - subscription.onDone(() { - print( - '======================================================================'); - completer.complete(); - }); - subscription.onError((dynamic error) => - completer.completeError('Failed to complete process run: $error')); - return completer.future; -} - Future generateJsonGeneratedModels({required bool useFvm}) async { final arguments = [ if (useFvm) ...[ @@ -176,7 +154,7 @@ Future generateJsonGeneratedModels({required bool useFvm}) async { 'build', '--delete-conflicting-outputs', ]; - await _runProcess( + await ProcessRunner.runProcessVerbose( arguments.first, arguments.skip(1).toList(), ); diff --git a/lib/run_process/run_process.dart b/lib/run_process/run_process.dart new file mode 100644 index 0000000..d47d40b --- /dev/null +++ b/lib/run_process/run_process.dart @@ -0,0 +1,30 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; + +class ProcessRunner { + ProcessRunner._(); + + static Future runProcessVerbose( + String command, List args) async { + print('\n$command ${args.join(' ')}\n'); + final completer = Completer(); + final result = await Process.start( + command, + args, + mode: ProcessStartMode.detachedWithStdio, + ); + print( + '======================================================================'); + final subscription = result.stdout + .listen((codeUnits) => stdout.write(utf8.decode(codeUnits))); + subscription.onDone(() { + print( + '======================================================================'); + completer.complete(); + }); + subscription.onError((dynamic error) => + completer.completeError('Failed to complete process run: $error')); + return completer.future; + } +}