From c0e8e1e5f3bbd6d96bac942199d3a57611b4815f Mon Sep 17 00:00:00 2001 From: Koen Van Looveren Date: Sat, 9 Mar 2024 15:18:13 +0100 Subject: [PATCH] fix: verbose logging listener --- CHANGELOG.md | 6 ++++++ .../input_listener/force_quit_listener.dart | 3 +-- .../versbose_logging_listener.dart | 18 ++++++++++++++++-- lib/src/impaktfull_cli.dart | 7 +++++++ 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52dda07..c6e07c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# 0.13.7 + +## Fix + +- Verbose logger listener converted to a broadcast stream + # 0.13.6 ## Fix diff --git a/lib/src/core/util/input_listener/force_quit_listener.dart b/lib/src/core/util/input_listener/force_quit_listener.dart index b055c2a..ee21bab 100644 --- a/lib/src/core/util/input_listener/force_quit_listener.dart +++ b/lib/src/core/util/input_listener/force_quit_listener.dart @@ -17,8 +17,7 @@ class ForceQuitListener { _listeners.remove(listener); static void init() { - _subscription = - ProcessSignal.sigint.watch().asBroadcastStream().listen((signal) async { + _subscription = ProcessSignal.sigint.watch().listen((signal) async { if (_isShuttingDown) return; _isShuttingDown = true; ImpaktfullCliLogger.log('\nForce quit detected. Cleaning up...'); diff --git a/lib/src/core/util/input_listener/versbose_logging_listener.dart b/lib/src/core/util/input_listener/versbose_logging_listener.dart index 421a4be..99eaf5d 100644 --- a/lib/src/core/util/input_listener/versbose_logging_listener.dart +++ b/lib/src/core/util/input_listener/versbose_logging_listener.dart @@ -5,12 +5,15 @@ import 'package:impaktfull_cli/src/core/util/logger/logger.dart'; class VerboseLoggingListener { static StreamSubscription>? _subscription; + static var _cancelOnStop = true; + static StreamController streamController = + StreamController.broadcast(); VerboseLoggingListener._(); static void startInputListener() { - _subscription?.cancel(); - _subscription = stdin.asBroadcastStream().listen((data) { + if (_subscription != null) return; + _subscription = stdin.listen((data) { final input = String.fromCharCodes(data).trim(); if (input.toLowerCase() == 'v' || input.toLowerCase() == 'verbose') { @@ -23,7 +26,18 @@ class VerboseLoggingListener { } static void stopListening() { + if (!_cancelOnStop) return; _subscription?.cancel(); _subscription = null; } + + static void setupMutiCommandInputListener() { + _cancelOnStop = false; + } + + static void clearMultipleCommandInputListener() { + _cancelOnStop = true; + stopListening(); + streamController.close(); + } } diff --git a/lib/src/impaktfull_cli.dart b/lib/src/impaktfull_cli.dart index c84528e..47270d9 100644 --- a/lib/src/impaktfull_cli.dart +++ b/lib/src/impaktfull_cli.dart @@ -2,6 +2,7 @@ import 'package:args/command_runner.dart'; import 'package:impaktfull_cli/src/core/model/error/impaktfull_cli_error.dart'; import 'package:impaktfull_cli/src/core/plugin/impaktfull_plugin.dart'; import 'package:impaktfull_cli/src/core/util/input_listener/force_quit_listener.dart'; +import 'package:impaktfull_cli/src/core/util/input_listener/versbose_logging_listener.dart'; import 'package:impaktfull_cli/src/integrations/appcenter/plugin/appcenter_plugin.dart'; import 'package:impaktfull_cli/src/integrations/apple_certificate/command/apple_certificate_root_command.dart'; import 'package:impaktfull_cli/src/core/util/extensions/arg_parser_extensions.dart'; @@ -131,4 +132,10 @@ class ImpaktfullCli { }); dispose(); } + + Future runMultiplCommands(AsyncCallback function) async { + VerboseLoggingListener.setupMutiCommandInputListener(); + await function(); + VerboseLoggingListener.clearMultipleCommandInputListener(); + } }