public void Failed_verb_parsing_prints_particular_help_screen() { string invokedVerb = null; object invokedVerbInstance = null; var options = new OptionsWithVerbsHelp(); var testWriter = new StringWriter(); ReflectionHelper.AssemblyFromWhichToPullInformation = Assembly.GetExecutingAssembly(); var parser = new CommandLine.Parser(with => with.HelpWriter = testWriter); var result = parser.ParseArguments(new string[] { "clone", "--no_hardlinks" }, options, (verb, subOptions) => { invokedVerb = verb; invokedVerbInstance = subOptions; }); result.Should().BeFalse(); var helpText = testWriter.ToString(); Console.WriteLine(helpText); var lines = helpText.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); // Verify just significant output lines[5].Trim().Should().Be("--no-hardlinks Optimize the cloning process from a repository on a local"); lines[6].Trim().Should().Be("filesystem by copying files."); lines[7].Trim().Should().Be("-q, --quiet Suppress summary message."); invokedVerb.Should().Be("clone"); invokedVerbInstance.Should().Be(null); }
static void Main(string[] args) { // Parse command line options var mpOptions = new CommandLineOptions(); var parser = new CommandLine.Parser(with => with.HelpWriter = Console.Out); parser.ParseArgumentsStrict(args, mpOptions, () => Environment.Exit(1)); List<string> products = new List<string> { "MediaPortal Setup TV", // Legacy folders for TVE3 support "MediaPortal TV Server", // Legacy folders for TVE3 support "MP2-Client", "MP2-Server", "MP2-ClientLauncher", "MP2-ServiceMonitor" }; string dataPath = !string.IsNullOrEmpty(mpOptions.DataDirectory) ? mpOptions.DataDirectory : Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); string outputPath = !string.IsNullOrEmpty(mpOptions.OutputDirectory) ? mpOptions.OutputDirectory : Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "MediaPortal2-Logs"); try { CollectLogFiles(dataPath, outputPath, products); } catch (Exception ex) { Console.WriteLine("Exception while collecting log files: {0}", ex); } }
public static TOptions ParseArguments <TOptions>(this CommandLine.Parser parser, string[] args) where TOptions : new() { TOptions options = new TOptions(); parser.ParseArguments(args, options); return(options); }
static void Main(string[] args) { Thread.CurrentThread.Name = "Main"; // Parse command line options var mpOptions = new CommandLineOptions(); var parser = new CommandLine.Parser(with => with.HelpWriter = Console.Out); parser.ParseArgumentsStrict(args, mpOptions, () => Environment.Exit(1)); if (String.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("wix"))) { Console.Write("WiX environment variable could not be found. Please reinstall WiX."); Environment.Exit(2); } if (!CreateTransforms(mpOptions)) { Environment.Exit(3); } if (!MergeTransforms(mpOptions)) { Environment.Exit(4); } }
static void Main(string[] args) { // Parse command line options var mpOptions = new CommandLineOptions(); var parser = new CommandLine.Parser(with => with.HelpWriter = Console.Out); parser.ParseArgumentsStrict(args, mpOptions, () => Environment.Exit(1)); List <string> products = new List <string> { "MediaPortal Setup TV", // Legacy folders for TVE3 support "MediaPortal TV Server", // Legacy folders for TVE3 support "MP2-Client", "MP2-Server", "MP2-ClientLauncher", "MP2-ServiceMonitor" }; string dataPath = !string.IsNullOrEmpty(mpOptions.DataDirectory) ? mpOptions.DataDirectory : Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); string outputPath = !string.IsNullOrEmpty(mpOptions.OutputDirectory) ? mpOptions.OutputDirectory : Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "MediaPortal2-Logs"); try { CollectLogFiles(dataPath, outputPath, products); } catch (Exception ex) { Console.WriteLine("Exception while collecting log files: {0}", ex); } }
/// <summary> /// 应用程序入口 /// </summary> /// <param name="args">命令行参数</param> static void Main(string[] args) { System.DateTime startTime = System.DateTime.Now; //-- 分析命令行参数 var options = new Options(); var parser = new CommandLine.Parser(with => with.HelpWriter = Console.Error); if (parser.ParseArgumentsStrict(args, options, () => Environment.Exit(-1))) { //-- 执行导出操作 try { Run(options); } catch (Exception exp) { Console.WriteLine("Error: " + exp.Message); } } //-- 程序计时 System.DateTime endTime = System.DateTime.Now; System.TimeSpan dur = endTime - startTime; Console.WriteLine( string.Format("[{0}]:\tConversion complete in [{1}ms].", Path.GetFileName(options.ExcelPath), dur.TotalMilliseconds) ); }
static void Main(string[] args) { try { var options = new Options(); if (args.Length == 0) { Console.WriteLine(options.GetUsage()); Environment.Exit(0); } var parser = new CommandLine.Parser(with => with.HelpWriter = Console.Error); if (parser.ParseArgumentsStrict(args, options, () => Environment.Exit(1))) { Command(options); } } catch (Exception ex) { Console.WriteLine("{" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "}"); Console.WriteLine(ex); } Environment.Exit(0); }
static int Main(string[] args) { var options = new Options(); var parser = new CommandLine.Parser(s => { s.MutuallyExclusive = false; }); var isValid = parser.ParseArguments(args, options); if (!isValid) { Console.WriteLine(CommandLine.Text.HelpText.AutoBuild(options).ToString()); return(-1); } try { Console.WriteLine("Get Hub info for serial: " + options.SMT_Serial); using (CLStoreEntities cx = new CLStoreEntities()) { var lhs = cx.LowesHubs.Where(l => l.smt_serial == options.SMT_Serial).OrderByDescending(l => l.date).First(); Console.WriteLine("Hub last tested: " + lhs.date); } } catch (Exception ex) { Console.WriteLine(ex.Message + "\r\n" + ex.StackTrace); return(-2); } return(0); }
public void Parse_verbs_using_instance() { string invokedVerb = null; object invokedVerbInstance = null; var proof = new Random().Next(int.MaxValue); var options = new OptionsWithVerbs(); options.CommitVerb.Should().NotBeNull(); options.CommitVerb.CreationProof = proof; var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "commit", "--amend" }, options, (verb, subOptions) => { invokedVerb = verb; invokedVerbInstance = subOptions; }); result.Should().BeTrue(); invokedVerb.Should().Be("commit"); invokedVerbInstance.Should().BeOfType <CommitSubOptions>(); // Check if the instance is the one provider by us (not by the parser) options.CommitVerb.CreationProof.Should().Be(proof); options.CommitVerb.Amend.Should().BeTrue(); }
public void Parse_strict_bad_input_fails_and_exits_with_verbs_when_get_usage_is_defined() { string invokedVerb = null; object invokedVerbInstance = null; var options = new OptionsWithVerbs(); var testWriter = new StringWriter(); ReflectionHelper.AssemblyFromWhichToPullInformation = Assembly.GetExecutingAssembly(); var parser = new CommandLine.Parser(with => with.HelpWriter = testWriter); var result = parser.ParseArgumentsStrict(new string[] { "bad", "input" }, options, (verb, subOptions) => { invokedVerb = verb; invokedVerbInstance = subOptions; }, () => Console.WriteLine("fake fail")); result.Should().BeFalse(); var helpText = testWriter.ToString(); Console.WriteLine(helpText); var lines = helpText.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); // Did we really produced all help? lines.Should().HaveCount(n => n == 1); // Verify just significant output lines[0].Trim().Should().Be("verbs help index"); invokedVerb.Should().Be("bad"); invokedVerbInstance.Should().BeNull(); }
public void Failed_parsing_prints_help_index() { string invokedVerb = null; object invokedVerbInstance = null; var options = new OptionsWithVerbs(); var testWriter = new StringWriter(); var parser = new CommandLine.Parser(with => with.HelpWriter = testWriter); var result = parser.ParseArguments(new string[] {}, options, (verb, subOptions) => { invokedVerb = verb; invokedVerbInstance = subOptions; }); result.Should().BeFalse(); invokedVerb.Should().BeEmpty(); invokedVerbInstance.Should().BeNull(); var helpText = testWriter.ToString(); helpText.Should().Be("verbs help index"); }
public void Failed_verb_parsing_prints_particular_help_screen() { string invokedVerb = null; object invokedVerbInstance = null; var options = new OptionsWithVerbs(); var testWriter = new StringWriter(); var parser = new CommandLine.Parser(with => with.HelpWriter = testWriter); var result = parser.ParseArguments(new string[] { "clone", "--no_hardlinks" }, options, (verb, subOptions) => { invokedVerb = verb; invokedVerbInstance = subOptions; }); result.Should().BeFalse(); invokedVerb.Should().Be("clone"); invokedVerbInstance.Should().BeNull(); var helpText = testWriter.ToString(); helpText.Should().Be("help for: clone"); }
public void Parse_verbs_using_instance() { string invokedVerb = null; object invokedVerbInstance = null; var proof = new Random().Next(int.MaxValue); var options = new OptionsWithVerbs(); options.CommitVerb.Should().NotBeNull(); options.CommitVerb.CreationProof = proof; var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "commit", "--amend" }, options, (verb, subOptions) => { invokedVerb = verb; invokedVerbInstance = subOptions; }); result.Should().BeTrue(); invokedVerb.Should().Be("commit"); invokedVerbInstance.Should().BeOfType<CommitSubOptions>(); // Check if the instance is the one provider by us (not by the parser) options.CommitVerb.CreationProof.Should().Be(proof); options.CommitVerb.Amend.Should().BeTrue(); }
/// <summary> /// 应用程序入口 /// </summary> /// <param name="args">命令行参数</param> static void Main(string[] args) { System.DateTime startTime = System.DateTime.Now; //-- 分析命令行参数 var options = new Options(); var parser = new CommandLine.Parser(with => with.HelpWriter = Console.Error); if (parser.ParseArgumentsStrict(args, options, () => Environment.Exit(-1))) { //-- 执行导出操作 try { Run(options); } catch (Exception exp) { Console.WriteLine("Error: " + exp.Message); } } //-- 程序计时 System.DateTime endTime = System.DateTime.Now; System.TimeSpan dur = endTime - startTime; Console.WriteLine( string.Format("[{0}]:\t转换完成[{1}毫秒].", Path.GetFileName(options.ExcelPath), dur.Milliseconds) ); }
static void Main(string[] args) { var options = new Options(); var parser = new CommandLine.Parser(with => with.HelpWriter = Console.Error); if (parser.ParseArgumentsStrict(args, options, () => { Environment.Exit(-2); })) { options.BoundaryCheck(); if (string.IsNullOrEmpty(options.InputFile) && string.IsNullOrEmpty(options.InputFileList)) { Console.WriteLine("Neither input file nor input file list is specified"); Environment.Exit(-2); } if (!string.IsNullOrEmpty(options.InputFile) && !string.IsNullOrEmpty(options.InputFileList)) { Console.WriteLine("Both input file and input file list are specified"); Environment.Exit(-2); } int returnValue = Run(options); if (returnValue != 0) { Environment.Exit(returnValue); } } }
public void Parse_verbs_create_instance() { string invokedVerb = null; object invokedVerbInstance = null; var options = new OptionsWithVerbs(); options.AddVerb.Should().BeNull(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] {"add", "-p", "untracked.bin"} , options, (verb, subOptions) => { invokedVerb = verb; invokedVerbInstance = subOptions; }); result.Should().BeTrue(); invokedVerb.Should().Be("add"); invokedVerbInstance.Should().BeOfType<AddSubOptions>(); // Parser has built instance for us options.AddVerb.Should().NotBeNull(); options.AddVerb.CreationProof.Should().NotHaveValue(); options.AddVerb.Patch.Should().BeTrue(); options.AddVerb.FileName[0].Should().Be("untracked.bin"); }
//class person { public string name { get; set; } } static void Main(string[] args) { //var persons = new[] { // new person { name = "personA" }, // new person { name = "personAA"}, // new person { name = "personB" } //}; //var filteredPersons = // persons // .Where(p => { var x = p.name.ToLower(); return x.EndsWith("a"); }) // .Where(p => p.name.ToLower().Count(c => c == 'a') > 0); var procname = System.Diagnostics.Process.GetCurrentProcess().ProcessName; Console.WriteLine(procname + ' ' + string.Join(" ", args)); var parser = new CommandLine.Parser(ps => { ps.MutuallyExclusive = true; ps.HelpWriter = Console.Out; }); if (!parser.ParseArguments(args, Options)) { return; } var assemblyName = GetAssemblyName(Options.InputFile); if (!File.Exists(assemblyName)) { Console.WriteLine("The specified file {0} cannot be found", assemblyName); return; } string outfile = GetFilePath(); // TODO: how to get this from the command line? EntityDescriptor descriptor; if (assemblyName.Contains("Northwind")) { descriptor = new NorthwindEntityDescriptor(); } else { descriptor = new EntityDescriptor(); } var metadata = Generator.Generate(assemblyName, descriptor); var json = ToJson(metadata); if (outfile != null) { Console.WriteLine("Writing to " + outfile); File.WriteAllText(outfile, json); } else { Console.WriteLine(json); } Console.WriteLine("Done"); Console.ReadKey(); }
public void CreatePoolArgNeededTestParsArg() { var commandLineParser = new CommandLine.Parser(); CommandLineParser parser = new CommandLineParser(new OptionConverter(new JsonDeserializer()), commandLineParser, new ParserUsage(), new VerbFormater()); ParseException ex = null; string[] argv = null; argv = new string[] { "pool", "create", "-p", "profile", "-i", "5" }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); argv = new string[] { "pool", "create", "--profile", "profile", "--instanceNodes", "5" }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); argv = new string[] { "pool", "create", "-n", "name", "-i", "5" }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); argv = new string[] { "pool", "create", "--name", "name", "--instanceNodes", "5" }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); argv = new string[] { "pool", "create", "-n", "name", "-p", "profile" }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); argv = new string[] { "pool", "create", "--name", "name", "--profile", "profile" }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); commandLineParser.Dispose(); }
public static void Main(string[] args) { options = new Options(); CommandLine.Parser parser = new CommandLine.Parser(with => with.HelpWriter = Console.Error); parser.ParseArgumentsStrict(args, options, () => Environment.Exit(-2)); if (options.AccessKey == null || options.SecretKey == null) { Console.WriteLine(options.GetUsage()); Environment.Exit(-2); } try { // ListVolumes(); // got for testing connectivity CheckForScheduledSnapshots(); CheckForExpiredSnapshots(); } catch (Exception err) { Console.WriteLine("Error from " + err.Source + ": " + err.Message); Environment.Exit(-2); } Environment.Exit(0); }
public static void Main(string[] args) { try { var p = new Program(); var options = new Options(); var parser = new CommandLine.Parser(settings => settings.CaseSensitive = true); if (parser.ParseArguments(args, options)) { p.Run(options); } else { // print help Console.WriteLine(options.GetUsage()); } if (options.Debug) { Watch.PrintTasks(); } } catch (Exception e) { ConsoleEx.PrintException(e.Message, e); } }
public void CreateTaskMissArgTestParsArg() { string name = "NAME"; string instance = "42"; string profile = "PROFILE"; string[] argv = null; var commandLineParser = new CommandLine.Parser(); CommandLineParser parser = new CommandLineParser(new OptionConverter(new JsonDeserializer()), commandLineParser, new ParserUsage(), new VerbFormater()); ParseException ex = null; argv = new string[] { "task", "create", "--name", name, "--instance", instance }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); argv = new string[] { "task", "create", "--name", name, "--profile", profile }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); argv = new string[] { "task", "create", "--instance", instance, "--profile", profile }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); argv = new string[] { "task", "create", "-n", name, "-i", instance }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); argv = new string[] { "task", "create", "-n", name, "-p", profile }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); argv = new string[] { "task", "create", "-i", instance, "-p", profile }; ex = Assert.Throws <ParseException>(() => parser.Parse(argv)); Assert.IsNotNull(ex); commandLineParser.Dispose(); }
public void Parse_verbs_create_instance() { string invokedVerb = null; object invokedVerbInstance = null; var options = new OptionsWithVerbs(); options.AddVerb.Should().BeNull(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "add", "-p", "untracked.bin" }, options, (verb, subOptions) => { invokedVerb = verb; invokedVerbInstance = subOptions; }); result.Should().BeTrue(); invokedVerb.Should().Be("add"); invokedVerbInstance.Should().BeOfType <AddSubOptions>(); // Parser has built instance for us options.AddVerb.Should().NotBeNull(); options.AddVerb.CreationProof.Should().NotHaveValue(); options.AddVerb.Patch.Should().BeTrue(); options.AddVerb.FileName[0].Should().Be("untracked.bin"); }
public void Parse_strict_bad_input_fails_and_exits_with_verbs() { string invokedVerb = null; object invokedVerbInstance = null; var options = new OptionsWithVerbsNoHelp(); var testWriter = new StringWriter(); ReflectionHelper.AssemblyFromWhichToPullInformation = Assembly.GetExecutingAssembly(); var parser = new CommandLine.Parser(with => with.HelpWriter = testWriter); var result = parser.ParseArgumentsStrict(new string[] { "bad", "input" }, options, (verb, subOptions) => { invokedVerb = verb; invokedVerbInstance = subOptions; }, () => Console.WriteLine("fake fail")); result.Should().BeFalse(); var helpText = testWriter.ToString(); Console.WriteLine(helpText); var lines = helpText.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); // Did we really produced all help? lines.Should().HaveCount(n => n == 8); // Verify just significant output lines[5].Trim().Should().Be("add Add file contents to the index."); lines[6].Trim().Should().Be("commit Record changes to the repository."); lines[7].Trim().Should().Be("clone Clone a repository into a new directory."); invokedVerb.Should().Be("bad"); invokedVerbInstance.Should().BeNull(); }
static void Main(string[] args) { Console.WriteLine("MetadataGenerator " + args.ToAggregateString(" ")); var parser = new CommandLine.Parser(ps => { ps.MutuallyExclusive = true; ps.HelpWriter = Console.Out; }); if (!parser.ParseArguments(args, Options)) { return; } var assemblyName = GetAssemblyName(Options.InputFile); if (!File.Exists(assemblyName)) { Console.WriteLine("The specified file {0} cannot be found", assemblyName); return; } var dbContextTypes = GetDbContextTypesFromAssembly(assemblyName); if (dbContextTypes.Length == 1 || Options.TypeName != null) { if (Options.TypeName != null) { try { var type = dbContextTypes.SingleOrDefault(t => t.Name == Options.TypeName || t.FullName == Options.TypeName); if (type != null) { ProcessType(type, Options.OutputFile ?? Options.TypeName + ".json"); } else { Console.WriteLine("The type specified {0} can not be found in the assembly {1}", Options.TypeName, assemblyName); } } catch (InvalidOperationException) { Console.WriteLine("There are several types named {0} in the assembly {1}", Options.TypeName, assemblyName); } catch (Exception ex) { Console.WriteLine(ex); } } else { var type = dbContextTypes.First(); ProcessType(type, Options.OutputFile ?? type.FullName + ".json"); } } else { // Hadle multitype scenario. //foreach (var type in dbContextTypes) { //} } }
private static Arguments GetArguments(string[] args) { Arguments result = new Arguments(); CommandLine.Parser parser = new CommandLine.Parser(); parser.ParseArguments(args, result); return(result); }
public void Passing_bad_value_to_a_nullable_enumeration_option_fails() { var options = new NullableTypesOptions(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "-e", "Overwrite" }, options); result.Should().BeFalse(); }
public void Parsing_two_mutually_exclusive_options_fails() { var parser = new CommandLine.Parser(new ParserSettings { MutuallyExclusive = true }); var options = new OptionsWithDefaultSet(); var result = parser.ParseArguments(new string[] { "-i", "1", "--file=mystuff.xml" }, options); result.Should().BeFalse(); }
public void Passing_no_value_to_a_nullable_integer_option_fails() { var options = new NullableTypesOptions(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "-int" }, options); result.Should().BeFalse(); }
public void Passing_no_value_to_a_double_type_long_option_fails() { var options = new NumberSetOptions(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "--double" }, options); result.Should().BeFalse(); }
public void Passing_double_value_to_float_option_must_fail_gracefully() { var options = new NumberSetOptions(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "-f", double.MaxValue.ToString(CultureInfo.InvariantCulture) }, options); result.Should().BeFalse(); }
public void Parsing_non_existent_long_option_fails_without_throwing_an_exception() { var options = new SimpleOptions(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "--extend" }, options); result.Should().BeFalse(); }
public void Using_wrong_case_with_default_fails() { var parser = new CommandLine.Parser(); var options = new MixedCaseOptions(); var result = parser.ParseArguments(new string[] { "-A", "alfa", "--Beta-Option", "beta" }, options); result.Should().BeFalse(); }
public void Parsing_mutually_exclusive_options_and_required_option_fails() { var options = new OptionsWithMultipleSetAndOneOption(); var parser = new CommandLine.Parser(new ParserSettings { MutuallyExclusive = true }); var result = parser.ParseArguments(new string[] { "-g167", "--hue", "205" }, options); result.Should().BeFalse(); }
public void Value_list_with_max_elem_set_to_zero_failes() { var options = new OptionsWithValueListMaximumZero(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "some", "value" }, options); result.Should().BeFalse(); }
public void Init() { CLILogsTest.SurchargeLogs(); CmdLineParser = new CommandLine.Parser(); string[] argv = new string[] { }; CommandLineParser parserObj = new CommandLineParser(new OptionConverter(new JsonDeserializer()), CmdLineParser, new ParserUsage(), new VerbFormater()); Parser = CmdLineParser.ParseArguments<Options.DefaultJob>(argv); }
public void Parse_string_array_option_using_long_name_with_equal_sign() { var options = new SimpleOptionsWithArray(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "--strarr=apple", "kiwi" }, options); result.Should().BeTrue(); base.ElementsShouldBeEqual(new string[] { "apple", "kiwi" }, options.StringArrayValue); }
public void Allow_single_dash_as_option_input_value() { var options = new SimpleOptions(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "--string", "-" }, options); result.Should().BeTrue(); options.StringValue.Should().Be("-"); }
public void Between_value_options_order_matters() { var options = new SimpleOptionsWithValueOptionAndValueList(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments( new string[] { "4321", "ofvalueoption", "-1234", "forvaluelist1", "forvaluelist2", "forvaluelist3" }, options); result.Should().BeFalse(); }
public void Value_list_with_max_elem_outside_bounds() { var options = new OptionsWithValueListMaximumThree(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments( new string[] { "file.a", "file.b", "file.c", "file.d" }, options); result.Should().BeFalse(); }
public void Parsing_one_mutually_exclusive_option_succeeds() { var options = new OptionsWithDefaultSet(); var parser = new CommandLine.Parser(new ParserSettings {MutuallyExclusive = true}); var result = parser.ParseArguments(new string[] { "--file=mystuff.xml" }, options); result.Should().BeTrue(); options.FileName.Should().Be("mystuff.xml"); }
public void Parse_string_array_option_using_short_name() { var options = new SimpleOptionsWithArray(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "-z", "alfa", "beta", "gamma" }, options); result.Should().BeTrue(); base.ElementsShouldBeEqual(new string[] { "alfa", "beta", "gamma" }, options.StringArrayValue); }
public void Parsing_two_mutually_exclusive_options_in_two_set_succeeds() { var options = new OptionsWithMultipleSet(); var parser = new CommandLine.Parser(new ParserSettings { MutuallyExclusive = true }); var result = parser.ParseArguments(new string[] { "-g167", "--hue", "205" }, options); result.Should().BeTrue(); options.Green.Should().Be((byte)167); options.Hue.Should().Be((short)205); }
public void Default_parsing_is_case_sensitive() { var parser = new CommandLine.Parser(); var options = new MixedCaseOptions(); var result = parser.ParseArguments(new string[] { "-a", "alfa", "--beta-OPTION", "beta" }, options); result.Should().BeTrue(); options.AlfaValue.Should().Be("alfa"); options.BetaValue.Should().Be("beta"); }
public void Parse_string_option() { var options = new SimpleOptions(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "-s", "something" }, options); result.Should().BeTrue(); options.StringValue.Should().Be("something"); Console.WriteLine(options); }
public void Setting_instance_is_not_reusable() { var settings = new ParserSettings(helpWriter: Console.Out); var parser = new CommandLine.Parser(settings); Assert.ThrowsDelegate act = () => { var parser2 = new CommandLine.Parser(settings); }; Assert.Throws<InvalidOperationException>(act); }
public void Setting_instance_became_immutable_after_being_consumed() { var settings = new ParserSettings { ParsingCulture = new CultureInfo("it-IT") }; var parser = new CommandLine.Parser(settings); Assert.ThrowsDelegate act = () => { settings.HelpWriter = Console.Out; }; Assert.Throws<InvalidOperationException>(act); }
public void Correct_input_not_activates_help() { var options = new MockOptions(); var writer = new StringWriter(); var parser = new CommandLine.Parser(with => with.HelpWriter = writer); var result = parser.ParseArguments( new string[] { "-imath.xml", "-oresult.xml" }, options); result.Should().BeTrue();; writer.ToString().Length.Should().Be(0); }
public static int Main(string[] args) { var options = new Options(); var parser = new CommandLine.Parser(settings => { settings.CaseSensitive = true; settings.HelpWriter = System.Console.Out; }); try { if (parser.ParseArguments(args, options)) { // Validate the arguments. options.ValidateOptions(); try { var message = string.Format("Processing file {0}...", options.InputFile); System.Console.WriteLine(message); Trace.TraceInformation(message); var processor = new FileProcessor(options); processor.Process(); message = string.Format("Done processing file {0}.", options.InputFile); System.Console.WriteLine(message); Trace.TraceInformation(message); } catch (Exception ex) { Trace.TraceError(string.Format("Exception occurred while trying to process the file. Exception: {0} {1}", ex.Message, ex.StackTrace)); System.Console.Error.WriteLine("An error occurred while trying to process the file."); return (int)ExitCode.Errored; } } } catch (ArgumentNullException ex) { Trace.TraceError(string.Format("ArgumentNullException occurred while trying to parse arguments passed to the program. Exception: {0} {1}", ex.Message, ex.StackTrace)); System.Console.Error.WriteLine("An error occurred while trying to parse the arguments passed to the application."); return (int)ExitCode.ArgumentError; } catch (InvalidArgumentException ex) { Trace.TraceError(string.Format("InvalidArgumentException occurred while trying to parse arguments passed to the program. Exception: {0} {1}", ex.Message, ex.StackTrace)); System.Console.Error.WriteLine("The following argument is invalid: {0} Error: {1}", ex.InvalidParameterName, ex.Message); return (int)ExitCode.ArgumentError; } return (int)ExitCode.Success; }
public void Setting_help_writer_using_constructor() { var writer = new StringWriter(); var parser = new CommandLine.Parser(new ParserSettings(writer)); var options = new SimpleOptionsWithHelpOption(); bool success = parser.ParseArguments(new string[] {"--help"}, options); success.Should().BeFalse(); writer.ToString().Should().Be("MockOptions::GetUsage()"); }
public void Parsing_mutually_exclusive_options_and_required_option_succeeds() { var options = new OptionsWithMultipleSetAndOneOption(); var parser = new CommandLine.Parser(new ParserSettings { MutuallyExclusive = true }); var result = parser.ParseArguments(new string[] { "-g100", "-h200", "-cRgbColorSet" }, options); result.Should().BeTrue(); options.Green.Should().Be((byte)100); options.Hue.Should().Be((short)200); options.DefaultColorSet.Should().Be(ColorSet.RgbColorSet); }
public void Allow_single_dash_as_non_option_value() { var options = new SimpleOptionsWithValueList(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments(new string[] { "-sparser.xml", "-", "--switch" }, options); result.Should().BeTrue(); options.StringValue.Should().Be("parser.xml"); options.BooleanValue.Should().BeTrue(); options.Items.Count.Should().Be(1); options.Items[0].Should().Be("-"); }
public void Parse_string_integer_bool_options() { var options = new SimpleOptions(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments( new string[] { "-s", "another string", "-i100", "--switch" }, options); result.Should().BeTrue(); options.StringValue.Should().Be("another string"); options.IntegerValue.Should().Be(100); options.BooleanValue.Should().BeTrue(); Console.WriteLine(options); }
public void Explicit_help_activation() { var options = new MockOptions(); var writer = new StringWriter(); var parser = new CommandLine.Parser(with => with.HelpWriter = writer); var result = parser.ParseArguments( new string[] { "--help" }, options); result.Should().BeFalse(); string helpText = writer.ToString(); (helpText.Length > 0).Should().BeTrue(); }
public void Value_option_attribute_values_are_not_mandatory() { var options = new SimpleOptionsWithValueOption(); var parser = new CommandLine.Parser(); var result = parser.ParseArguments( new string[] { "--switch" }, options); result.Should().BeTrue(); options.BooleanValue.Should().BeTrue(); options.StringItem.Should().BeNull(); options.IntegerItem.Should().Be(0); options.NullableDoubleItem.Should().NotHaveValue(); }
public void Bad_input_activates_help() { var options = new MockOptions(); var writer = new StringWriter(); var parser = new CommandLine.Parser(with => with.HelpWriter = writer); var result = parser.ParseArguments( new string[] { "math.xml", "-oresult.xml" }, options); result.Should().BeFalse(); string helpText = writer.ToString(); (helpText.Length > 0).Should().BeTrue(); Console.Write(helpText); }
/// <summary> /// The main entry point for the MP2 server application. /// </summary> public static void Main(params string[] args) { // Parse command line options var mpOptions = new CommandLineOptions(); var parser = new CommandLine.Parser(with => with.HelpWriter = Console.Out); parser.ParseArgumentsStrict(args, mpOptions, () => Environment.Exit(1)); if (mpOptions.RunAsConsoleApp) new ApplicationLauncher(mpOptions.DataDirectory).RunAsConsole(); else { ServiceBase[] servicesToRun = new ServiceBase[] { new WindowsService() }; ServiceBase.Run(servicesToRun); } }