blob: c4f95f20c5baba5bc703a05191fe03d0afbed4d4 [file] [log] [blame]
#ifndef RECORDER_ARGUMENTS_HPP
#define RECORDER_ARGUMENTS_HPP
#include <iostream>
#include <string>
#include <unordered_map>
#include "args.hxx"
class FontArguments
{
public:
FontArguments(int argc, const char** argv) :
m_Parser("Convert a font file into the rive format.", "Experimental....")
{
args::HelpFlag help(m_Parser, "help", "Display this help menu", {'h', "help"});
args::Group required(m_Parser, "required arguments:", args::Group::Validators::All);
args::Group optional(m_Parser, "optional arguments:", args::Group::Validators::DontCare);
args::ValueFlag<std::string> source(required, "path", "source filename", {'s', "source"});
args::ValueFlag<std::string> destination(required,
"path",
"destination filename",
{'d', "destination"});
args::ValueFlag<std::string> charset(optional,
"path",
"charset filename",
{'c', "charset"});
args::CompletionFlag completion(m_Parser, {"complete"});
try
{
m_Parser.ParseCLI(argc, argv);
}
catch (const std::invalid_argument e)
{
std::cout << e.what();
throw;
}
catch (const args::Completion& e)
{
std::cout << e.what();
throw;
}
catch (const args::Help&)
{
std::cout << m_Parser;
throw;
}
catch (const args::ParseError& e)
{
std::cerr << e.what() << std::endl;
std::cerr << m_Parser;
throw;
}
catch (args::ValidationError e)
{
std::cerr << e.what() << std::endl;
std::cerr << m_Parser;
throw;
}
m_Destination = args::get(destination);
m_Source = args::get(source);
m_Charset = args::get(charset);
}
const std::string& destination() const { return m_Destination; }
const std::string& source() const { return m_Source; }
const std::string& charset() const { return m_Charset; }
private:
args::ArgumentParser m_Parser;
std::string m_Destination;
std::string m_Source;
std::string m_Charset;
};
#endif