#include "tool.hpp" #include #include #include #include void register_cmd_scan(CLI::App &app); void register_cmd_dump(CLI::App &app); void register_cmd_verify(CLI::App &app); void register_cmd_hooks(CLI::App &app); int main(int argc, char *argv[]) { // Initialize spdlog auto console = spdlog::stdout_color_mt("console"); spdlog::set_default_logger(console); spdlog::set_level(spdlog::level::info); // Default to info level spdlog::set_pattern(std::string("[%^%l%$] %v")); CLI::App app{"Ghidra decompile database tool"}; std::string type_str = "auto"; Options &options = Options::get(); app.add_option("-d,--database", options.db_path, "SQLite database path") ->default_val("gh.db"); app.add_flag("-v,--verbose", options.verbose, "Enable verbose logging (debug level)") ->each([&](std::string) { if (options.verbose) { spdlog::set_level(spdlog::level::debug); } }); app.add_flag("--log-file", options.log_file, "Enable logging to file") ->each([&](std::string) { auto log_sink = std::make_shared( options.log_file, true); console->sinks().push_back(log_sink); }); app.require_subcommand(); register_cmd_scan(app); register_cmd_dump(app); register_cmd_verify(app); register_cmd_hooks(app); CLI11_PARSE(app, argc, argv); return 0; }