Example #1
0
        public override int Execute(CommandContext context, Settings settings)
        {
            if (string.IsNullOrWhiteSpace(settings.Input))
            {
                settings.Input = _inputOptions.Filename;
            }

            settings.Framerate ??= _inputOptions.Framerate;

            if (string.IsNullOrWhiteSpace(settings.Output))
            {
                settings.Output = _outputOptions.Filename;
            }


            AnsiConsole.Progress()
            .AutoRefresh(false)
            .AutoClear(false)
            .HideCompleted(true)
            .Columns(new TaskDescriptionColumn {
                Alignment = Justify.Left
            })
            .Start(ctx =>
            {
                var loopTask = ctx.AddTask("Starting message loop");

                if (!_messageLoopService.Start(loopTask))
                {
                    return;
                }

                while (!loopTask.IsFinished)
                {
                    Thread.Sleep(20);
                }

                var playerTask = ctx.AddTask("Starting track list player");
                if (_trackListPlayer.Setup(playerTask,
                                           settings.Input,
                                           settings.Output,
                                           _outputOptions.Format,
                                           FrameRateExtensions.FromDouble((double)settings.Framerate)))
                {
                    _trackListPlayer.Render(ctx);
                }
            });
            return(1);
        }