#include #include "../extern/args.hpp" #include "Tools/ScriptCompiler.hpp" #include "Tools/ScriptHeadersExporter.hpp" int main(int argc, const char* argv[]) { args::ArgumentParser parser("PkmnLib tool executable.", ""); args::HelpFlag help(parser, "help", "Display this help menu", {'h', "help"}); args::Group tools(parser, "Tools"); args::Command exportScriptHeaders(tools, "export-script-headers", "Exports the Angelscript script headers"); args::Command compileScripts(tools, "compile-scripts", "Compile the given scripts"); args::ValueFlag outPathExportScriptHeaders(exportScriptHeaders, "outpath", "The path to output to.", {'o'}); args::ValueFlag inPathCompileScripts(compileScripts, "inpath", "The path to read scripts from.", {'i'}); args::ValueFlag outPathCompileScripts(compileScripts, "outpath", "The path to output to.", {'o'}); try { parser.ParseCLI(argc, argv); } catch (const args::Help&) { std::cout << parser; return 0; } catch (const args::ParseError& e) { std::cerr << e.what() << std::endl; std::cerr << parser; return 1; } if (exportScriptHeaders) { std::string outPathValue = args::get(outPathExportScriptHeaders); ScriptHeadersExporter::Export(outPathValue); } else if (compileScripts) { std::string inPathValue = args::get(inPathCompileScripts); std::string outPathValue = args::get(outPathCompileScripts); ScriptCompiler::Compile(inPathValue, outPathValue); } else { std::stringstream ss; return 1; } return 0; }