summaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp70
1 files changed, 50 insertions, 20 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 9001fcb..7cab502 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -5,39 +5,69 @@
#ifdef STANDALONE
Companion* Companion::Instance;
-void BindOTRMode(CLI::App& app){
- auto otr = app.add_subcommand("otr", "Extracts the rom to a folder");
+int main(int argc, char *argv[]) {
+ CLI::App app{"Torch - [T]orch is [O]ur [R]esource [C]onversion [H]elper\n\
+ * It extracts from a baserom and generates code or an otr.\n\
+ * It can also generate an otr from a folder of assets.\n"
+ };
+ std::string mode;
std::string filename;
- otr->add_option("rom", filename, "sm64 us rom")->required()->check(CLI::ExistingFile);
+ std::string target;
+ std::string folder;
+ bool otrMode = false;
+ bool debug = false;
+ bool header = false;
+
+ app.require_subcommand();
+
+ /* Generate an OTR */
+ auto otr = app.add_subcommand("otr", "OTR - Generates an otr\n");
+
+ otr->add_option("<baserom.z64>", filename, "")->required()->check(CLI::ExistingFile);
+
+ otr->add_flag("-t,--target", target, "OTR output destination");
+ otr->add_flag("-o,--otr", otrMode, "OTR Mode");
+ otr->add_flag("-d,--dir", folder, "Generate OTR from a directory of assets");
+ otr->add_flag("-z,--zeader", header, "Generates a header");
+ otr->add_flag("-v,--verbose", debug, "Verbose Debug Mode");
otr->parse_complete_callback([&]() {
- auto instance = Companion::Instance = new Companion(filename);
- instance->Init();
- });
-}
+ auto instance = Companion::Instance = new Companion(filename, otrMode, debug);
+
+ if (header) {
+ instance->Init(ExportType::Header);
+ } else {
+ instance->Init(ExportType::Binary);
+ }
+
+ if (!folder.empty()) {
+ Companion::Pack(folder, target);
+ }
-void BindPackMode(CLI::App& app){
- auto pack = app.add_subcommand("pack", "Packs the rom from a folder");
- std::string folder;
- pack->add_option("folder", folder, "Folder")->required()->check(CLI::ExistingDirectory);
- std::string output;
- pack->add_option("output", output, "MPQ Output")->required();
- pack->parse_complete_callback([&]() {
- Companion::Pack(folder, output);
});
-}
-int main(int argc, char *argv[]) {
- CLI::App app{"CubeOS - Rom extractor"};
+ /* Generate C code */
+ auto code = app.add_subcommand("code", "Code - Generates C code\n");
- BindOTRMode(app);
- BindPackMode(app);
+ code->add_option("<baserom.z64>", filename, "")->required()->check(CLI::ExistingFile);
+
+ code->add_flag("-v,--verbose", debug, "Verbose Debug Mode; adds offsets to C code");
+ code->parse_complete_callback([&]() {
+ auto instance = Companion::Instance = new Companion(filename, otrMode, debug);
+ instance->Init(ExportType::Code);
+ });
try {
app.parse(argc, argv);
} catch (const CLI::ParseError &e) {
+ std::cout << app.help() << std::endl;
return app.exit(e);
}
+ // No arguments --> display help.
+ if (argc == 1) {
+ std::cout << app.help() << std::endl;
+ }
+
return 0;
}
#endif \ No newline at end of file