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)); }
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); }
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); }
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); }
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); }
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(); }