FluentCli 1.3.1

dotnet add package FluentCli --version 1.3.1
NuGet\Install-Package FluentCli -Version 1.3.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FluentCli" Version="1.3.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FluentCli --version 1.3.1
#r "nuget: FluentCli, 1.3.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FluentCli as a Cake Addin
#addin nuget:?package=FluentCli&version=1.3.1

// Install FluentCli as a Cake Tool
#tool nuget:?package=FluentCli&version=1.3.1

FluentCli

Nuget

Build Status dependencies:none NuGet

dotnet add package fluentcli

FluentCli

A .NET fluent Api for writing command line applications. Heavily inspired by commander, which was in turn inspired by commander

Example

static void Main(string[] args) {

    var app = new FluentCli.Program()
        .AppName("Example Application")
        .Version("0.0.1")
        .PrintErrors()
        .AddFlag("-t, -test, --testing", "runs a test")
        .AddFlag("-l, -list, --list-all", "list them all")
        .AddOnce("-n, --name", "prints your name")
        .Run(args)
        .Build();

    if (app.Testing) {
        Console.WriteLine("Tested!");
    }

    if (app.ListAll) {
        Console.WriteLine("Listing them all!");
    }
    
    if (app.Name != null) {
        Console.WriteLine($"Your name is {app.name}");
    }

}

Notes

Calling .Build() after .Run(args) returns an object with all of the long-form flag names added as c# style names. ie: in the example above the object will have app.Testing, app.ListAll, and app.Name, because of the flags --testing, --list-all, and --name.

Also the interface allows combining of short flags, so that the above example could be called with -tl instead of -t -l

Api

AddFlag(string flags, string helpText)

Adds a boolean flag to the application. ie: -h or --version

flags

String of all flags that you want to correspond to this flag. Seperate them by commas. One flag must start with "--" and only one.

helpText

The text that is printed to the command line when a user asks for help.

AddOnce(string flags, string helpText)

Adds a flag that takes a single argument. ie -o myfile.txt

flags

String of all flags that you want to correspond to this flag. Seperate them by commas. One flag must start with "--" and only one.

helpText

The text that is printed to the command line when a user asks for help.

Is(string flagName)

flagName

The long flag of the argument you want to query.

returns wether the given flag was entered by the user. Will look at all flag variations for the entered flag. ie Is("help") will look for '-h', '-?', or '--help'.

Get(string flagName)

flagName

The long flag of the argument you want to query. Will look at all flag variations for the entered flag. ie Get("argument") will look for '-a', '-arg', or '--argument'.

Arguments()

Returns all of the arguments passed into the program not corresponding to a flag.

Version(string version, [string flags])

Shortcut for adding a version argument. defaults to "-V" and "--version".

PrintErrors()

If this function is called, errors generated by users will be printed directly to the console. If not called exceptions will be thrown so you can handle user interaction yourself.

returns the argument entered after the flag.

Todo

  • Testing, more of it. Unit tests, integration tests.
  • Better Docs.
  • Possibly convert scalar types to take even more load off of users.
  • Refactoring main program file. Too much in it. and Run() method could be lighter.
  • Paramaters for arguments in help text. ie instead of "-n" get "-n [name]"
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.3.1 591 6/14/2020
1.3.0 909 7/10/2018
1.2.1 857 7/10/2018
1.1.0 879 7/7/2018
1.0.0 786 5/22/2018