Exemplo n.º 1
0
        private static void RunUserInteractiveSession()
        {
            bool quit = false;

            // Create Command Line parser
            ColoredConsole.WriteUserInstructions("HELP: 'help' to list commands. 'help <command>' to get a help for specific command.");
            // var parser = new CommandLine.Parser(with => with.HelpWriter = null);
            var parser = CommandLine.Parser.Default;

            do
            {
                try
                {
                    PauseFor();
                    Console.WriteLine();
                    Console.ForegroundColor = ConsoleColor.Gray;
                    ColoredConsole.WriteUserPrompt("Enter a command: ");
                    var commandLineArray = Console.ReadLine().Split(CommandSeparator);

                    parser.ParseArguments <CommandParser.StartMovieOptions, CommandParser.StopMovieOptions, CommandParser.QuitOptions>(commandLineArray)
                    .MapResult(
                        (CommandParser.StartMovieOptions options) =>
                    {
                        return(MoviePlaybackSystemHelper.StartPlayingMovie(new PlayMovieMessage(options.MovieTitle, options.UserId)));
                    },
                        (CommandParser.StopMovieOptions options) =>
                    {
                        return(MoviePlaybackSystemHelper.StopPlayingMovie(new StopMovieMessage(options.UserId)));
                    },
                        (CommandParser.QuitOptions options) =>
                    {
                        quit = true;
                        return(0);
                    },
                        errs =>
                    {
                        return(1);
                    }
                        );
                }
                catch (Exception ex)
                {
                    ColoredConsole.WriteError($"Exception occurred (type: '{ex.GetType().Name}')");
                    ColoredConsole.WriteError(ex.Message);
                    ColoredConsole.WriteError(ex.StackTrace);
                }
            } while (quit == false);
        }