ArgumentParser - ArdaOzcan/SimpleArgParse GitHub Wiki
prog is the program name mentioned in the usage string. It is the executable name by default.
Example:
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser(prog: "progName");
parser.ParseArgs(args);
}
}
}> wiki -h
usage: progName [-h]
Optional arguments:
-h, --help Show this message.
Similar to prog, you can override usage with a custom string. It is usage: {prog} {optionalArgs} {positionalArgs} by default.
Example:
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser(usage: "This is my custom usage.");
parser.ParseArgs(args);
}
}
}> wiki -h
usage: This is my custom usage.
Optional arguments:
-h, --help Show this message.
description is a string printed just after the usage in a help message. It is null by default.
Example:
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser(description: "This is a description of this non-existent tool.");
parser.ParseArgs(args);
}
}
}> wiki -h
usage: wiki [-h]
This is a description of this non-existent tool.
Optional arguments:
-h, --help Show this message.
String that is printed after the whole help message. It is null by default.
Example:
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser(epilog: "Help message ends here btw.");
parser.ParseArgs(args);
}
}
}> wiki -h
usage: wiki [-h]
Optional arguments:
-h, --help Show this message.
Help message ends here btw.
This method adds an argument with the specified properties to the argument parser.
Name of the argument. If this name starts with the "-" prefix then it will be an optional argument, else it will be a positional argument.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
parser.AddArgument("-n");
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki -n "arda özcan"
Namespace([n, arda özcan])
Longer (not necessarily) name of an optional argument, an alias. It can be used for positional arguments, it would only change the key value in the namespace.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
parser.AddArgument("-n", longName: "--name");
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki --name "arda özcan"
Namespace([name, arda özcan])
Action of an optional argument. Check the ArgumentAction section for further information about actions and what they do.
This example show the usage of the action parameter in the AddArgument method.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
parser.AddArgument("-v", action: ArgumentAction.StoreTrue);
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki -v
Namespace([v, True])
Default value of an optional argument if it is not supplied. Default value is null by default.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
parser.AddArgument("--name", defaultValue: "admin");
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki
Namespace([name, admin])
A list of strings indicating the only selectable options for an argument. An error will be thrown if the provided values is not in the list of choices.
Example:
using System;
using System.Collections.Generic;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
parser.AddArgument("--level", choices: new List<string> {"low", "mid", "high"});
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki --level somethingElse
usage: wiki [-h] --level LEVEL
wiki: error: invalid choice: '--level' (choose from low, mid, high)
Determines is an optional argument is required to be supplied. Can be used for positional arguments too but it won't effect anything.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
parser.AddArgument("--filename", required: true);
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki
usage: wiki [-h] --filename FILENAME
wiki: error: the following arguments are required: filename
Help string to be printed in the help message for the argument. It is empty by default.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
parser.AddArgument("--filename", help: "The filename for the tool.");
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}usage: wiki [-h] --filename FILENAME
Optional arguments:
-h, --help Show this message.
--filename FILENAME The filename for the tool.
Constant value for the argument. This parameter only works for arguments with StoreConst and AppendConst actions.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
parser.AddArgument("--one", action: ArgumentAction.StoreConst, constant: 1);
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki --one
Namespace([one, 1])
This method adds subparsers for the parent parser. Subparsers is an object that resembles a branch split in a tree. That means you can branch into different parsers from a parent parser. This can be used for a tool that does more than one job and requires keyword commands to do them. .NET CLI can be an example since it contains a lot of different commands (subparsers) for different actions.
A basic subparsers setup would be as follows.
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
// Subparsers object is cmd.
var cmd = parser.AddSubparsers(help: "Command to be supplied.");
// 'run' command for the cmd subparsers.
var runParser = cmd.AddParser("run");
// Add an argument to the 'run' parser just like a regular one.
runParser.AddArgument("-fn", longName: "--filename", help: "Filename of the program.");
// 'parser' command for the cmd subparsers.
var parseParser = cmd.AddParser("parse");
// Add an argument to the 'parse' parser.
parseParser.AddArgument("-o", longName:"--output", help: "Output file of the parsed json.");
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki -h
usage: wiki [-h] {run,parse} ...
Optional arguments:
-h, --help Show this message.
Positional arguments:
{run,parse} Command to be supplied.
> wiki run -h
usage: wiki run [-h] -fn FILENAME
Optional arguments:
-h, --help Show this message.
-fn FILENAME, --filename FILENAME
Filename of the program.
> wiki run -fn "file.bin"
Namespace([filename, file.bin])
Help string to be printed in the help message for the subparsers object. It is empty by default.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
var cmd = parser.AddSubparsers(help: "Command to be supplied.");
var runParser = cmd.AddParser("run");
runParser.AddArgument("-fn");
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki -h
usage: wiki [-h] {run} ...
Optional arguments:
-h, --help Show this message.
Positional arguments:
{run} Command to be supplied.
Shows the subparsers help message in a different section with the given name.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
var cmd = parser.AddSubparsers(title: "cmd");
var runParser = cmd.AddParser("run");
runParser.AddArgument("-fn");
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}usage: wiki [-h] {run} ...
Optional arguments:
-h, --help Show this message.
cmd:
{run}
Adds a key to the namespace for the parser with the supplied string as value.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
var cmd = parser.AddSubparsers(dest: "cmd");
var runParser = cmd.AddParser("run");
runParser.AddArgument("-fn");
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki run
Namespace([cmd, run], [fn, file.bin])
This method will parse the given arguments and return a Namespace object that will allow you to access all arguments.
String array that has the provided arguments as elements. You can use the default args array from the Main method parameters or provide a custom array.
Note: the first element shouldn't be the program name/path.
Example:
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
parser.AddArgument("--name");
var parsed = parser.ParseArgs(args);
Console.WriteLine(parsed);
}
}
}> wiki --name arda
Namespace([name, arda])
using System;
using ArdaOzcan.SimpleArgParse;
namespace Wiki
{
class Program
{
static void Main(string[] args)
{
var parser = new ArgumentParser();
parser.AddArgument("--name");
var parsed = parser.ParseArgs(new string[] {"--name", "arda"});
Console.WriteLine(parsed);
}
}
}> wiki
Namespace([name, arda])