Clysh 2.1.0
**DO NOT USE THIS**
IT IS INCOMPATIBLE WITH VERSION 2.3.X+
See the version list below for details.
dotnet add package Clysh --version 2.1.0
NuGet\Install-Package Clysh -Version 2.1.0
<PackageReference Include="Clysh" Version="2.1.0" />
paket add Clysh --version 2.1.0
#r "nuget: Clysh, 2.1.0"
// Install Clysh as a Cake Addin #addin nuget:?package=Clysh&version=2.1.0 // Install Clysh as a Cake Tool #tool nuget:?package=Clysh&version=2.1.0
Clysh
CLi in Yaml for SHell apps
Create your own CLI on .NET 6+ with simple steps.
Release Notes
- 1.0.2 - Initial release
- 1.0.3 - Parameters creation using builder pattern
- 1.0.4 - XML docs for all public classes
- 1.0.5 - More production safety validations
- 1.0.6 - Simplify option check id
- 1.0.7 - Order parameter by property and introduce filled property to parameter model
- 1.0.8 - BugFix: Lastcommand executed flag fix
- 1.0.9 - Some improvements to order parameters and increase max description to 100 chars
- 1.1.0 - BugFix: Parameter filled order
- 1.2.0 - Make action by command path
- 1.3.1 - BugFix: Debug mode
- 1.3.4 - Data transfer between comands and description breakline after each 50 chars
- 1.3.5 - Improvements to exception handling
- 1.3.6 - Custom error messages and Colorized Console messages
- 1.4.0 - Removed option parameter from action interface
- 1.4.1 - Some code refactoring and fix example
- 2.0.0 - New Feature: Global Options
- 2.0.1 - BugFix: Ignore 'Groups' deprecated field on YAML deserialize
- 2.1.0 - Remove command interface and protect fields from external manipulation. Builder pattern data handling improvement.
What is?
Clysh is a library to create a .NET Command Line Interface (CLI). The main goal is to create your own CLI with only business code.
Features
Clysh has some features to facilitate the process of create a CLI.
- You can write your own CLI as an YAML or JSON file. The file is parsed at runtime.
- Easy to make a command tree. You can nest commands to run in a specific order;
- The commands can have custom options with your own shortcuts;
- The options can have required and/or optional parameter to some user data input.
- You can group options like a radio button.
- The help command is auto-generated.
- Easy to mocking for unit tests.
- 2.0 NEW: Global options feature to reuse option structure with N commands
Getting Started
To use Clysh you need to install the package from NuGet.
dotnet add package clysh
Then, to start create a clidata.yml with the content below:
Title: MyCLI with only test command
Version: 1.0
Commands:
- Id: mycli
Description: My own CLI
Options:
- Id: test
Description: Test option
Shortcut: T
Parameters:
- Id: value
Required: true
MinLength: 1
MaxLength: 15
Group: foo
- Id: dummy
Description: Dummy option
Shortcut: d
Parameters:
- Id: value
Required: true
MinLength: 1
MaxLength: 15
Group: foo
Root: true
- Id: mycli.mychild
Description: My child for tests
To use this create a new Console Application, then in your Program.cs write this:
using Clysh.Core;
var setup = new ClyshSetup("clidata.yml");
setup.BindAction("mycli", (cmd, view) =>
{
view.Print(cmd.Options["test"].Selected ? "mycli with test option" : "mycli without test option");
if (cmd.Options["test"].Selected)
{
var option = cmd.Options["test"];
var data = option.Parameters["value"].Data;
view.Print(data);
}
});
var cli = new ClyshService(setup, true);
cli.Execute(args);
Run the console and you will see the magic. If you need some help, pass the argument --help to your app.
The expected output:
mycli without test option
With --help argument
MyCLI with only test command. Version: 1.0
Usage: mycli [options] [commands]
My own CLI
[options]:
Option Group Description Parameters
-h, --help Show help on screen
-d, --dummy foo Test option <value:Required>
-T, --test foo Test option <value:Required>
[commands]:
mychild My child
Note: The project of example app is available on ./Samples/Clysh.Sample folder
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. 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. |
-
net6.0
- Newtonsoft.Json (>= 13.0.1)
- System.IO.Abstractions (>= 17.0.15)
- YamlDotNet (>= 11.2.1)
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 | |
---|---|---|---|
2.6.3 | 272 | 3/17/2023 | |
2.6.2 | 230 | 3/17/2023 | |
2.6.1 | 235 | 3/17/2023 | |
2.6.0 | 223 | 3/16/2023 | |
2.5.0 | 235 | 3/9/2023 | |
2.4.0 | 235 | 3/7/2023 | |
2.3.1 | 207 | 3/6/2023 | |
2.3.0 | 224 | 3/5/2023 | |
2.2.0 | 256 | 3/5/2023 | |
2.1.0 | 292 | 2/7/2023 | |
2.0.1 | 327 | 2/3/2023 | |
2.0.0 | 305 | 2/3/2023 | |
1.4.1 | 330 | 1/14/2023 | |
1.4.0 | 421 | 8/16/2022 | |
1.3.6 | 475 | 8/12/2022 | |
1.3.5 | 482 | 8/8/2022 | |
1.3.4 | 440 | 8/7/2022 | |
1.3.3 | 466 | 8/2/2022 | |
1.3.2 | 457 | 8/2/2022 | |
1.3.1 | 478 | 8/2/2022 | |
1.3.0 | 481 | 7/24/2022 | |
1.2.0 | 457 | 7/21/2022 | |
1.1.0 | 474 | 7/18/2022 | |
1.0.9 | 478 | 7/6/2022 | |
1.0.8 | 515 | 6/25/2022 | |
1.0.7 | 498 | 6/25/2022 | |
1.0.6 | 527 | 6/22/2022 | |
1.0.5 | 459 | 6/22/2022 | |
1.0.4 | 502 | 6/11/2022 | |
1.0.3 | 495 | 6/11/2022 | |
1.0.2 | 478 | 6/11/2022 |