Skip to content

Commit

Permalink
fix: verbose logging listener
Browse files Browse the repository at this point in the history
  • Loading branch information
vanlooverenkoen committed Mar 9, 2024
1 parent 3a5aacc commit c0e8e1e
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 4 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# 0.13.7

## Fix

- Verbose logger listener converted to a broadcast stream

# 0.13.6

## Fix
Expand Down
3 changes: 1 addition & 2 deletions lib/src/core/util/input_listener/force_quit_listener.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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...');
Expand Down
18 changes: 16 additions & 2 deletions lib/src/core/util/input_listener/versbose_logging_listener.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,15 @@ import 'package:impaktfull_cli/src/core/util/logger/logger.dart';

class VerboseLoggingListener {
static StreamSubscription<List<int>>? _subscription;
static var _cancelOnStop = true;
static StreamController<String> 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') {
Expand All @@ -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();
}
}
7 changes: 7 additions & 0 deletions lib/src/impaktfull_cli.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -131,4 +132,10 @@ class ImpaktfullCli {
});
dispose();
}

Future<void> runMultiplCommands(AsyncCallback function) async {
VerboseLoggingListener.setupMutiCommandInputListener();
await function();
VerboseLoggingListener.clearMultipleCommandInputListener();
}
}

0 comments on commit c0e8e1e

Please sign in to comment.