Skip to content

ArgParser: Streamline command-line argument parsing in C++ with this lightweight library. Effortlessly handle boolean, integer, double, and string types for seamless integration into your applications.

License

Notifications You must be signed in to change notification settings

Pankaja-Suganda/Argparser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArgParser

ArgParser is a simple C++ library for parsing command-line arguments with support for various data types.

C/C++ CI CodeQL

Table of Contents

Introduction

ArgParser is designed to provide an easy-to-use interface for parsing command-line arguments in C++ programs. It supports various data types such as bool, int, double, and string, allowing developers to quickly integrate command-line argument parsing into their applications.

Installation

To use ArgParser in your C++ project, follow these steps:

  1. Clone the ArgParser repository:

    git clone https://github.com/Pankaja-Suganda/Argparser.git
  2. Include the argparser directory in your project.

  3. Link your project with the ArgParser library.

Usage

To use ArgParser in your C++ program, include the argparser.h header file and create an instance of the ArgParser class. Add arguments using the addArgument method, parse command-line arguments using the parse method, and retrieve values using the get method.

#include <argparser.h>

int main(int argc, char* argv[]) {
    ArgParser parser(
        "Box Volume Calculator",                      // Project name
        "Calculate the volume of a rectangular box"   // Description
    );

    // Add arguments for the dimensions of the box and verbose mode
    parser.addArgument("length",   "-l", "--length",  "Length of the box",     0.0);
    parser.addArgument("width",    "-w", "--width",   "Int of the box",        0.0);
    parser.addArgument("depth",    "-d", "--depth",   "Depth of the box",      0.0);
    parser.addArgument("verbose",  "-v", "--verbose", "Enable verbose output", false);

    // Parse command-line arguments
    parser.parse(argc, argv);

    // checking whether the default help is triggered
    if(ret == PARSE_DEFAULT_HELP_OK){
        return 0;
    }

    if(ret < PARSER_OK){
        printf("Error: Error occured (%d)\n", ret);
        return 1; // Return non-zero to indicate an error
    }

    // Retrieve values 
    double length = parser.get<double>("length");
    double width  = parser.get<double>("width");
    double depth  = parser.get<double>("depth");
    bool verbose  = parser.get<bool>("verbose");

    if (parser.argExists("length") && parser.argExists("width") && parser.argExists("depth")) {
        if (verbose) {
            printf("Dimensions: %.2f X %.2f X %.2f\n", height, width, depth);
        } 

        // Use retrieved values in your program logic

        // Calculate the volume of the box!!
    }

    return 0;
}

Help Command

To display help information, use the following commands:

./<exe-name>.exe -h 

or

./<exe-name>.exe --help

Upon execution, it will output:

Box Volume Calculator

DESCRIPTION:
        Calculate the volume of a rectangular box
USAGE:
        -d, --depth     : Depth of the box       
        -l, --length    : Length of the box
        -v, --verbose   : Enable verbose output
        -w, --width     : Width of the box

Replace <exe-name> with the actual name of your executable. This section provides a quick guide on how users can access help information along with an example output showcasing the available command-line arguments.

Other than that user can add own help command with built-in help command, then the user specified function will execute before help command.

// Example user-specified callback
void userSpecifiedCallback() {
    printf("Executing user-specified callback before the built-in help command.");
}

int main(int argc, char* argv[]) {
    ArgParser parser;

    // Set user-specified callback for help
    parser.setHelpCallback(userSpecifiedCallback);

    // Parse command-line arguments
    parser.parse(argc, argv);

    // ... rest of the program
    return 0;
}

Examples

Here are some examples demonstrating the usage of ArgParser:

Example 1: Basic Usage

// Add a boolean argument with a default value of false
parser.addArgument("boolArg", "-b", "--bool", "Bool argument", false);

// Parse command-line arguments
parser.parse(argc, argv);

// Retrieve the boolean value
bool boolValue = parser.get<bool>("boolArg");

Example 2: Parsing Integers

// Add an integer argument with a default value of 42
parser.addArgument("intArg", "-i", "--int", "Int argument", 42);

// Parse command-line arguments
parser.parse(argc, argv);

// Retrieve the integer value
int intValue = parser.get<int>("intArg");

Example 3: Parsing Doubles

// Add a double argument with a default value of 3.14
parser.addArgument("doubleArg", "-d", "--double", "Double argument", 3.14);

// Parse command-line arguments
parser.parse(argc, argv);

// Retrieve the double value
double doubleValue = parser.get<double>("doubleArg");

Example 4: Parsing Strings

// Add a string argument with a default value of "default"
parser.addArgument("strArg", "-s", "--string", "String argument", "default");

// Parse command-line arguments
parser.parse(argc, argv);

// Retrieve the string value
std::string stringValue = parser.get<std::string>("strArg");

Contributing

Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request.

License

This project is not licensed yet - see the LICENSE.md file for details.

About

ArgParser: Streamline command-line argument parsing in C++ with this lightweight library. Effortlessly handle boolean, integer, double, and string types for seamless integration into your applications.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •