Giter VIP home page Giter VIP logo

commanddotnet's Introduction

Nuget NuGet Pre Release NuGet GitHub

GitHub last commit Netlify Build

Gitter Discord

CommandDotNet

A modern framework for building modern CLI apps

Out of the box support for commands, sub-commands, validations, dependency injection, piping and streaming, enums & custom types, typo suggestions, prompting, passwords, response files and much more! See the features page.

Favors POSIX conventions

Includes test tools used by the framework to test all features of the framework.

Modify and extend the functionality of the framework through configuration and middleware.

Project Status

This project is stable. Lack of new features are a result of the maturity of the library, not an indication of the liveliness of this project. We are available to fix bugs and answer questions and remain fairly responsive. There are PRs and issues in the backlog for new features that are currently low priority for the maintainers. We will accept PRs. If you haven't discussed them with us first and the change is significant, please consider the submission the beginning of a design discussion.

Support

For bugs, create an issue

For questions and feature requests, start a discussion

For a quick walkthrough of features, see our Getting Started guides

Here's a starter:

Example

Begin by creating the commands:

public class Program
{
    // this is the entry point of your application
    static int Main(string[] args)
    {
        // AppRunner<T> where T is the class defining your commands
        // You can use Program or create commands in another class
        return new AppRunner<Program>().Run(args);
    }

    // Add command with two positional arguments
    public void Add(int x, int y) => Console.WriteLine(x + y);

    // Subtract command with two positional arguments
    public void Subtract(int x, int y) => Console.WriteLine(x - y);
}

snippet source | anchor

That's it. You now have an application with two commands. Let's see about how we can call it from command line.

Assuming our application's name is calculator.dll, let's run this app from command line using dotnet. First we'll check out the auto-generated help.

$ dotnet calculator.dll --help
Usage: dotnet calculator.dll [command]

Commands:

  Add
  Subtract

Use "dotnet calculator.dll [command] --help" for more information about a command.

snippet source | anchor

From the root we can see the available commands. Instead of --help we could have used -h or -?. We'll use -h to get help for the Add command.

$ dotnet calculator.dll Add -h
Usage: dotnet calculator.dll Add <x> <y>

Arguments:

  x  <NUMBER>

  y  <NUMBER>

snippet source | anchor

Let's try it out by adding two numbers

$ dotnet calculator.dll Add 40 20
60

snippet source | anchor

CommandDotNet will validate if the arguments can be converted to the correct type.

$ dotnet calculator.dll Add a 20
'a' is not a valid Number

snippet source | anchor

Check out the docs for more examples

See our Getting Started guides to see how to improve the help documentation, test the application and utilize the many other features of CommandDotNet.

Credits ๐ŸŽ‰

Special thanks to Drew Burlingame for continuous support and contributions

commanddotnet's People

Contributors

drewburlingame avatar bilal-fazlani avatar taori avatar raydixon avatar nicolasdorier avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.