lib/cli: delete duplicate header file.
parent
c59a1ac723
commit
ebcf436a18
|
@ -1,94 +0,0 @@
|
||||||
// Copyright 2022, FOSS-VG Developers and Contributers
|
|
||||||
//
|
|
||||||
// This program is free software: you can redistribute it and/or modify it
|
|
||||||
// under the terms of the GNU Affero General Public License as published
|
|
||||||
// by the Free Software Foundation, version 3.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied
|
|
||||||
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
// See the GNU Affero General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
|
||||||
// version 3 along with this program.
|
|
||||||
// If not, see https://www.gnu.org/licenses/agpl-3.0.en.html
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <vector>
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#include "error.hpp"
|
|
||||||
|
|
||||||
namespace CLI {
|
|
||||||
|
|
||||||
struct Flag {
|
|
||||||
char shortName;
|
|
||||||
std::string longName;
|
|
||||||
// used for automatic usage generation
|
|
||||||
std::string description;
|
|
||||||
|
|
||||||
bool present;
|
|
||||||
|
|
||||||
Flag();
|
|
||||||
Flag(char shortName, std::string longName, std::string description);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Option {
|
|
||||||
char shortName;
|
|
||||||
std::string longName;
|
|
||||||
// used for automatic usage generation
|
|
||||||
std::string description;
|
|
||||||
std::string placeholder; // the "COUNT" in "ping [-c <COUNT>] <HOST>"
|
|
||||||
|
|
||||||
bool present;
|
|
||||||
std::string value;
|
|
||||||
|
|
||||||
Option();
|
|
||||||
Option(char shortName, std::string longName, std::string placeholder, std::string description);
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Argument {
|
|
||||||
// used for automatic usage generation
|
|
||||||
std::string description;
|
|
||||||
std::string placeholder; // the "HOST" in "ping [-c <COUNT>] <HOST>"
|
|
||||||
|
|
||||||
bool present;
|
|
||||||
std::string value;
|
|
||||||
|
|
||||||
Argument();
|
|
||||||
Argument(std::string placeholder, std::string description);
|
|
||||||
};
|
|
||||||
|
|
||||||
class ArgumentsParser {
|
|
||||||
private:
|
|
||||||
std::map<char, Flag*> flagsByShortName;
|
|
||||||
std::map<std::string, Flag*> flagsByLongName;
|
|
||||||
std::map<char, Option*> optionsByShortName;
|
|
||||||
std::map<std::string, Option*> optionsByLongName;
|
|
||||||
std::vector<Argument> arguments;
|
|
||||||
std::string description;
|
|
||||||
std::string additionalInfo;
|
|
||||||
|
|
||||||
public:
|
|
||||||
std::string programName;
|
|
||||||
bool wrongUsage;
|
|
||||||
std::vector<std::string> wrongUsageMessages;
|
|
||||||
|
|
||||||
// using int here bc that's how main() is defined
|
|
||||||
ArgumentsParser(int argc, const char* const argv[], std::vector<Flag> flags, std::vector<Option> options, std::vector<Argument> arguments);
|
|
||||||
ArgumentsParser(int argc, const char* const argv[], std::vector<Flag> flags, std::vector<Option> options, std::vector<Argument> arguments, std::string description);
|
|
||||||
ArgumentsParser(int argc, const char* const argv[], std::vector<Flag> flags, std::vector<Option> options, std::vector<Argument> arguments, std::string description, std::string additionalInfo);
|
|
||||||
~ArgumentsParser();
|
|
||||||
|
|
||||||
ErrorOr<bool> getFlag(char shortName);
|
|
||||||
ErrorOr<bool> getFlag(std::string longName);
|
|
||||||
ErrorOr<std::string> getArgument(std::vector<CLI::Argument>::size_type position);
|
|
||||||
ErrorOr<std::string> getOption(char shortName);
|
|
||||||
ErrorOr<std::string> getOption(std::string longName);
|
|
||||||
|
|
||||||
std::string getUsage();
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue