5#include "absl/strings/str_cat.h"
6#include "absl/strings/str_format.h"
7#include "absl/strings/str_join.h"
16namespace fs = std::filesystem;
28 return absl::FailedPreconditionError(
"Project context not available.");
31 std::string query_type = parser.
GetString(
"query").value();
33 if (query_type ==
"info") {
35 }
else if (query_type ==
"files") {
38 }
else if (query_type ==
"symbols") {
40 return absl::FailedPreconditionError(
41 "Asar wrapper not available for symbols query.");
45 return absl::InvalidArgumentError(
46 absl::StrCat(
"Unknown query type: ", query_type));
61 return absl::OkStatus();
67 if (!fs::exists(abs_path)) {
68 return absl::NotFoundError(absl::StrCat(
"Path not found: ", path));
72 for (
const auto& entry : fs::directory_iterator(abs_path)) {
74 formatter.
AddField(
"name", entry.path().filename().string());
75 formatter.
AddField(
"type", entry.is_directory() ?
"directory" :
"file");
81 return absl::OkStatus();
87 if (symbols.empty()) {
88 return absl::NotFoundError(
89 "No symbols loaded. Load symbols via the Assemble menu or ensure the "
90 "build script generates them.");
94 for (
const auto& [
name, symbol] : symbols) {
96 formatter.
AddField(
"name", symbol.name);
97 formatter.
AddField(
"address", absl::StrFormat(
"$%06X", symbol.address));
101 return absl::OkStatus();
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Utility for parsing common CLI argument patterns.
std::optional< std::string > GetString(const std::string &name) const
Parse a named argument (e.g., –format=json or –format json)
absl::Status RequireArgs(const std::vector< std::string > &required) const
Validate that required arguments are present.
core::AsarWrapper * asar_wrapper_
project::YazeProject * project_
std::map< std::string, AsarSymbol > GetSymbolTable() const
std::string git_repository
std::string GetRelativePath(const std::string &absolute_path) const
std::string GetAbsolutePath(const std::string &relative_path) const
std::string last_build_hash
std::string symbols_filename