Argparse

Command-line arguments parsing library.

View the Project on GitHub Cofyc/argparse

NAME

argparse - A command line arguments parsing library.

Build Status

DESCRIPTION

This module is inspired by parse-options.c (git) and python's argparse module.

Arguments parsing is common task in cli program, but traditional getopt libraries are not easy to use. This library provides high-level arguments parsing solutions.

The program defines what arguments it requires, and argparse will figure out how to parse those out of argc and argv, it also automatically generates help and usage messages and issues errors when users give the program invalid arguments.

Features

There are basically three types of options:

There are basically two forms of options:

Short options may be bundled, e.g. -a -b can be specified as -ab.

Options are case-sensitive.

Options and non-option arguments can clearly be separated using the -- option.

Examples

#include "argparse.h"

static const char *const usage[] = {
   "test_argparse [options] [[--] args]",
   NULL,
};

int
main(int argc, const char **argv)
{
   int force = 0;
   int num = 0;
   const char *path = NULL;
   struct argparse_option options[] = {
       OPT_HELP(),
       OPT_BOOLEAN('f', "force", &force, "force to do", NULL),
       OPT_STRING('p', "path", &path, "path to read", NULL),
       OPT_INTEGER('n', "num", &num, "selected num", NULL),
       OPT_END(),
   };
   struct argparse argparse;
   argparse_init(&argparse, options, usage, 0);
   argc = argparse_parse(&argparse, argc, argv);
   if (force != 0)
       printf("force: %d\n", force);
   if (path != NULL)
       printf("path: %s\n", path);
   if (num != 0)
       printf("num: %d\n", num);
   if (argc != 0) {
       printf("argc: %d\n", argc);
       int i;
       for (i = 0; i < argc; i++) {
           printf("argv[%d]: %s\n", i, *(argv + i));
       }
   }
   return 0;
}