public void FullExemple() { CommandParser cp = new CommandParser(); string appDefinition = "This is an exemple on how to use the Command Parser. \r\n" + "The parser allows the management of commands with arguments/options, or a simple use of arguments. \r\n" + "Main idea is to manage a command line quite similar to git command line. Typically, a command line: \r\n" + "\t soft.exe new -branch \"new branch\" \r\n" + "is managed by the command parser. \r\n" + "Also, the command parser generates a help display thanks the information provided during the configuration. \r\n" + "What you see here, is the content of the ApplicationDescription"; cp.ApplicationDescription = appDefinition; //First command string c1Description = "Create a new command in the command parser. A command is the first word just after the application name. A command shall never start by the arguments prefix (usually defined by -), and shall not be a space. \r\n" + " A command can have mulitple parameters. Parameters are mandatory inputs, while arguments are optional items. \r\n" + "If you use one or several commands, you should avoid the definition of arguments at application level. \r\n" + "you should avoid a such configuration: \r\n" + "\t app.exe command1 -arg1 -arg2 \r\n" + "\t app.exe --help \r\n" + "Instead, use commands under this form:" + "\t app.exe command1 -arg1 -arg2 \r\n" + "\t app.exe help \r\n" + "Commands and arguments are associated to action item. Keep only the action of an argument associated to command to define a configuration. Do not execute specific command or launch a process from them. Else, your command will not be executed as expected."; Command c1 = cp.Command("new", c1Description, (c, p, a) => { Console.WriteLine("This line is displayed follwing the action defined for the command new."); Console.WriteLine("No parameter nor arguments have been defined for this command."); }); string c2Description = "This command shos how to add parameters to a command \r\n" + "Here, two parameters are defined and have to be retrieved on the command line to allow the action associated to the command"; Command c2 = cp.Command("addParam", c2Description, 2, (c, p, a) => { Console.WriteLine("This line is displayed follwing the action defined for the command new."); Console.WriteLine("No parameter nor arguments have been defined for this command."); Console.WriteLine("You can retrieve the value of parameter thanks its field Value"); Console.WriteLine("p[0].Value will retrive the value of the first parameter \t\n"); }); c2.Parameters[0].Description = "This is the description of the first parameter. The name of the parameter is used for display. The description and the allocation of a name to a parameter is not mandatory. They are automatically defined thanks a constructor"; c2.Parameters[1].Name = "Parameter2Name"; c2.Parameters[1].Description = "A parameter name shall not contain a space."; c2.Parameters.Parameter("Param3", "Here we add a 3rd parameter by using a different method"); Console.WriteLine(cp.ToString()); Assert.IsFalse(cp is null); }
public void SimpleCommandWithTwoArgument() { CommandParser cp = new CommandParser(); bool commandDone = false; bool argDone = false; bool arg2Done = false; Command c1 = cp.Command("new", "create new", (e, l, a) => { Console.WriteLine("New"); commandDone = true; }); c1.Arguments.Argument("f", "force", "forece the update", CommandArgumentFlags.TakesParameter, (c, s) => { Console.WriteLine("Arguments " + s); argDone = true; }); c1.Arguments.Argument("d", "del" + "delete", "delete", (c, s) => { Console.WriteLine("Delete " + s); arg2Done = true; }); string[] testValues = { "Command", "new", "--force", "test", "-d" }; cp.Parse(testValues); Console.WriteLine(cp.ToString()); Assert.IsTrue(commandDone); Assert.IsTrue(argDone); Assert.IsTrue(arg2Done); }
public void SimpleCommand() { CommandParser cp = new CommandParser(); bool commandDone = false; Command c1 = cp.Command("new", "create new", (e, l, a) => { Assert.IsNull(l); Assert.IsNull(a); Console.WriteLine("New"); commandDone = true; }); string[] testValues = { "Command", "new" }; cp.Parse(testValues); Assert.IsTrue(commandDone); }
public void SimpleCommandWithOneParameter() { CommandParser cp = new CommandParser(); bool commandDone = false; Command c1 = cp.Command("new", "create new", 1, (e, l, a) => { Assert.AreEqual("parameter", l[0].Value); Assert.IsNull(a); Console.WriteLine("New " + l[0].Value); commandDone = true; }); string[] testValues = { "Command", "new", "parameter" }; cp.Parse(testValues); Assert.IsTrue(commandDone); }
public void SimpleCommandWithTwoMandatoryParameters_3Provided() { CommandParser cp = new CommandParser(); bool commandDone = false; Command c1 = cp.Command("new", "create new", 2, (e, l, a) => { Assert.AreEqual(2, l.Count); Assert.AreEqual("parameter1", l[0].Value); Assert.IsNull(a); Console.WriteLine("New " + l[0] + " " + l[1]); commandDone = true; }); string[] testValues = { "Command", "new", "parameter1", "parameter2", "parameter3" }; cp.Parse(testValues); Assert.IsTrue(commandDone); }
public void SCommand_2P_2A() { CommandParser cp = new CommandParser(); bool commandDone = false; bool argDone = false; bool arg2Done = false; Command c1 = cp.Command("new", "create new", 2, (e, l, a) => { Assert.AreEqual(2, l.Count); Assert.AreEqual("parameter1", l[0].Value); Assert.AreEqual(2, a.Count); Console.WriteLine("New " + l[0] + " " + l[1]); Console.WriteLine(l.ToString()); commandDone = true; }); c1.Arguments.Argument("f", "force", "forece the update", CommandArgumentFlags.TakesParameter, (c, s) => { Console.WriteLine("Arguments " + s); argDone = true; }); c1.Arguments.Argument("d", "del" + "delete", "delete", (c, s) => { Console.WriteLine("Delete " + s); arg2Done = true; }); string[] testValues = { "Command", "new", "parameter1", "parameter2", "--force", "test", "-d" }; cp.Parse(testValues); Console.WriteLine(cp.ToString()); Assert.IsTrue(commandDone, "Command done"); Assert.IsTrue(argDone, "Arg1 done"); Assert.IsTrue(arg2Done, "Arg2 done"); }