mirror of https://github.com/infosecn1nja/C3.git
43 lines
1005 B
C++
43 lines
1005 B
C++
#pragma once
|
|
|
|
namespace FSecure::C3::Linter
|
|
{
|
|
/// Channel linter command line arguments parser
|
|
class ArgumentParser
|
|
{
|
|
public:
|
|
/// Parse and validate arguments
|
|
/// @param argc - number of arguments
|
|
/// @param argv - vector of arguments
|
|
/// @throws std::invalid_argument if config is not valid
|
|
ArgumentParser(int argc, char** argv);
|
|
|
|
/// @returns valid application config
|
|
AppConfig const& GetConfig() const;
|
|
|
|
/// @returns formatted usage string
|
|
std::string GetUsage() const;
|
|
|
|
private:
|
|
/// Helper to configure internal parser
|
|
void ConfigureParser();
|
|
|
|
/// Helper create AppConfig
|
|
void FillConfig();
|
|
|
|
/// Validate created config, uses ArgumentParser options in messages
|
|
/// @throws std::invalid_argument if config is not valid
|
|
void ValidateConfig() const;
|
|
|
|
/// place to store argv[0]
|
|
std::filesystem::path m_AppName;
|
|
|
|
/// Internal argument parser
|
|
argparse::ArgumentParser m_ArgParser;
|
|
|
|
/// Holds an application config, once arguments
|
|
AppConfig m_Config;
|
|
};
|
|
}
|
|
|