blob: 649d4f468f44bee15925d29616e559b76d77c389 [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