Example #1
0
        public async Task EvaluateAsync(CancellationToken cancellationToken)
        {
            if (_restartImmediatelySessionPreference.HasValue)
            {
                await GetRudeEditResult(_restartImmediatelySessionPreference.Value, cancellationToken);

                return;
            }

            var key = await _requester.GetKeyAsync(
                "Do you want to restart your app - Yes (y) / No (n) / Always (a) / Never (v)?",
                KeyPressed,
                cancellationToken);

            switch (key)
            {
            case ConsoleKey.Escape:
            case ConsoleKey.Y:
                await GetRudeEditResult(restartImmediately : true, cancellationToken);

                return;

            case ConsoleKey.N:
                await GetRudeEditResult(restartImmediately : false, cancellationToken);

                return;

            case ConsoleKey.A:
                _restartImmediatelySessionPreference = true;
                await GetRudeEditResult(restartImmediately : true, cancellationToken);

                return;

            case ConsoleKey.V:
                _restartImmediatelySessionPreference = false;
                await GetRudeEditResult(restartImmediately : false, cancellationToken);

                return;
            }

            bool KeyPressed(ConsoleKey key)
            {
                return(key is ConsoleKey.Y or ConsoleKey.N or ConsoleKey.A or ConsoleKey.V);
            }
        }