48 lines
1.5 KiB
C++
48 lines
1.5 KiB
C++
#include "tool.hpp"
|
|
#include <filesystem>
|
|
#include <spdlog/sinks/stdout_color_sinks.h>
|
|
#include <spdlog/sinks/basic_file_sink.h>
|
|
#include <CLI11.hpp>
|
|
|
|
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<spdlog::sinks::basic_file_sink_mt>(
|
|
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;
|
|
}
|