Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 

README.md

Args

Simple and typesafe commandline parsing for C++14.

Quickstart

Simply provide a class with fields that is to be filled by command-line arguments:

struct hello
{
    static const char* help()
    {
        return "Simple program that greets NAME for a total of COUNT times.";
    }
    int count;
    std::string name;

    hello() : count(1)
    {}

    template<class F>
    void parse(F f)
    {
        f(count, "--count", "-C", args::help("Number of greetings."));
        f(name, "--name", "-N", args::help("The person to greet."), args::required());
    }

    void run()
    {
        for(int i=0;i<count;i++) printf("%s\n", name.c_str());
    }
};

int main(int argc, char const *argv[]) 
{
    args::parse<hello>(argc, argv);
}

The command then could be run like this:

$ hello --name Paul --count 3
Paul
Paul
Paul

The args library will auto-generate help info:

$ hello --help
Usage: hello [options...]

  Simple program that greets NAME for a total of COUNT times.  

Options: 

            -h, --help Show help  
 --count, -C [integer] Number of greetings.  
   --name, -N [string] The person to greet.

In addition, nested commands can be created:

struct cli : args::group<cli>
{
    static const char* help()
    {
        return "Command-line interface to manage a database";
    }
};

struct initdb : cli::command<initdb>
{
    initdb() {}
    static const char* help()
    {
        return "Initialize database";
    }
    void run()
    {
        printf("Initialize database\n");
    }
};

struct dropdb : cli::command<dropdb>
{
    dropdb() {}
    static const char* help()
    {
        return "Delete database";
    }
    void run()
    {
        printf("Delete database\n");
    }
};

int main(int argc, char const *argv[]) 
{
    args::parse<cli>(argc, argv);
}

So each subcommand can be ran like this:

$ cli initdb
Initialize database
$ cli dropdb
Delete database

In addition help is generated for subcommands as well:

$ cli --help
Usage: cli [options...] [command]

  Command-line interface to manage a database  

Options: 

 -h, --help Show help  

Commands: 

     dropdb Delete database  
     initdb Initialize database  

About

Simple and type-safe commandline argument parser for C++14

Topics

Resources

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.