コード例 #1
0
        private void App_OnStartup(object sender, StartupEventArgs e)
        {
            var parser = new QuestionParser();
            var errors = parser.TryParse(e.Args, out var questions);

            if (errors.Any())
            {
                Console.Error.WriteLine("Failed to parse arguments");
                errors.ForEach(err => Console.Error.WriteLine(err));
            }

            if (!questions.Any())
            {
                Console.WriteLine(
                    @"Usage: askme.exe ""question"" [""question=answer"", ""key:question"", ""key:question=answer""...]");
                ExitWithCode(1);
                return;
            }

            var dialog    = new QueryFormWindow(new QueryFormViewModel(questions));
            var submitted = dialog.ShowDialog() ?? false;

            if (!submitted)
            {
                ExitWithCode(2);
                return;
            }

            var response = dialog.Model.ToPromptResponse();

            Console.WriteLine(JsonSerializer.Serialize(response.Answers));
        }
コード例 #2
0
        public void FailsWithEmptyQuestion()
        {
            const string q      = "key:";
            var          parser = new QuestionParser();

            var result = parser.TryParse(q, out var prompt);

            Assert.False(result);
            Assert.Null(prompt);
        }
コード例 #3
0
        public void CanParseSimpleQuestions()
        {
            const string q      = "question";
            var          parser = new QuestionParser();

            var result = parser.TryParse(q, out var prompt);

            Assert.True(result);
            Assert.Equal(q, prompt.Question);
            Assert.Equal(q, prompt.Key);
        }
コード例 #4
0
        public void IgnoresEmptyAnswer()
        {
            const string q      = "question=";
            var          parser = new QuestionParser();

            var result = parser.TryParse(q, out var prompt);

            Assert.True(result);
            Assert.Equal("question", prompt.Question);
            Assert.Null(prompt.Answer);
        }
コード例 #5
0
        public void CanParseKeyQuestionAndAnswer()
        {
            const string q      = "key:question=answer";
            var          parser = new QuestionParser();

            var result = parser.TryParse(q, out var prompt);

            Assert.True(result);
            Assert.Equal("question", prompt.Question);
            Assert.Equal("key", prompt.Key);
            Assert.Equal("answer", prompt.Answer);
        }
コード例 #6
0
        static void Main(string[] args)
        {
            Win32Console.AttachConsole();

            if (!args.Any())
            {
                Console.WriteLine(
                    @"Usage: askme.exe ""question"" [""question=answer"", ""key:question"", ""key:question=answer""...]");
                Exit(1);
                return;
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            var parser = new QuestionParser();
            var errors = parser.TryParse(args, out var qs);

            if (errors.Any())
            {
                Console.Error.WriteLine("Failed to parse questions");
                errors.ForEach(e => Console.Error.WriteLine($"Failed to parse: {e}"));
                Exit(1);
                return;
            }

            using var form = new PromptForm(qs);
            var result = form.ShowDialog();

            if (result != DialogResult.OK)
            {
                Exit(-1);
                return;
            }

            var answers = form.Response.Answers;

            Console.WriteLine(JsonSerializer.Serialize(answers));

            Exit();
        }