Atlass-
Atlass-

Reputation: 125

How to get command line parameters in specific format?

For example, we have option "--date".

I use System.CommandLine library to get options from command line and it works with such format: "--date 2023-02-06", but I want it to work with format kind of: "--date=2023-02-06". Is there a way to do this?

Upvotes: 0

Views: 767

Answers (1)

tmaj
tmaj

Reputation: 35175

If you don't mind using a beta Microsoft library you could use System.CommandLine.

From Option-argument delimiters:

Option-argument delimiters

System.CommandLine lets you use a space, '=', or ':' as the delimiter between an option name and its argument. For example, the following commands are equivalent:

dotnet build -v quiet
dotnet build -v=quiet
dotnet build -v:quiet

For example (This is modified Tutorial: Get started with System.CommandLine):

// dotnet add package System.CommandLine --prerelease
using System.CommandLine;


internal class Program
{ 
    static async Task<int> Main(string[] args)
    {
        var date = new Option<string?>(
            name: "--date",
            description: "TODO");


        var rootCommand = new RootCommand("TODO");
        rootCommand.AddOption(date);

        rootCommand.SetHandler((date) => 
            { 
                Run(date!); 
            },
            date);

        return await rootCommand.InvokeAsync(args);

    }

    static void Run(string date)
    {
        Console.WriteLine(date);
    }
}

Then we can:

PS C:\git\games\bin\Release\net6.0\win10-x64\publish> .\games.exe --date 2023-02-06
2023-02-06
PS C:\git\games\bin\Release\net6.0\win10-x64\publish> .\games.exe --date:2023-02-06
2023-02-06
PS C:\git\games\bin\Release\net6.0\win10-x64\publish> .\games.exe --date=2023-02-06
2023-02-06

Upvotes: 1

Related Questions