1#ifndef YAZE_SRC_CLI_SERVICE_RESOURCES_COMMAND_CONTEXT_H_
2#define YAZE_SRC_CLI_SERVICE_RESOURCES_COMMAND_CONTEXT_H_
8#include "absl/status/status.h"
9#include "absl/status/statusor.h"
55 absl::StatusOr<Rom*>
GetRom();
95 std::optional<zelda3::CustomObjectManager::State>
112 std::optional<std::string>
GetString(
const std::string& name)
const;
117 absl::StatusOr<int>
GetInt(
const std::string& name)
const;
122 absl::StatusOr<int>
GetHex(
const std::string& name)
const;
127 bool HasFlag(
const std::string& name)
const;
137 absl::Status
RequireArgs(
const std::vector<std::string>& required)
const;
142 std::optional<std::string>
FindArgValue(
const std::string& name)
const;
158 static absl::StatusOr<OutputFormatter>
FromString(
const std::string& format);
173 void AddField(
const std::string& key,
const std::string& value);
174 void AddField(
const std::string& key,
const char* value);
175 void AddField(
const std::string& key,
int value);
176 void AddField(
const std::string& key, uint64_t value);
177 void AddField(
const std::string& key,
bool value);
182 void AddHexField(
const std::string& key, uint64_t value,
int width = 2);
228 std::string
EscapeJson(
const std::string& str)
const;
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 > FindArgValue(const std::string &name) const
std::vector< std::string > args_
ArgumentParser(const std::vector< std::string > &args)
std::vector< std::string > GetPositional() const
Get all remaining positional arguments.
std::optional< std::string > GetString(const std::string &name) const
Parse a named argument (e.g., –format=json or –format json)
bool HasFlag(const std::string &name) const
Check if a flag is present.
absl::Status RequireArgs(const std::vector< std::string > &required) const
Validate that required arguments are present.
absl::StatusOr< int > GetHex(const std::string &name) const
Parse a hex integer argument.
absl::StatusOr< int > GetInt(const std::string &name) const
Parse an integer argument (supports hex with 0x prefix)
Encapsulates common context for CLI command execution.
const std::string & GetFormat() const
Get the output format ("json" or "text")
bool IsVerbose() const
Check if verbose mode is enabled.
std::optional< project::YazeProject > loaded_project_
absl::StatusOr< Rom * > GetRom()
Get the ROM instance (loads if not already loaded)
void RestoreProjectRuntimeContext()
absl::Status EnsureLabelsLoaded(Rom *rom)
Ensure resource labels are loaded.
project::YazeProject * GetProjectContext()
Returns loaded project context when –project-context was used.
emu::debug::SymbolProvider * GetSymbolProvider()
Get the SymbolProvider instance.
std::optional< core::FeatureFlags::Flags > previous_feature_flags_
std::optional< zelda3::CustomObjectManager::State > previous_custom_object_state_
bool project_runtime_applied_
emu::debug::SymbolProvider symbol_provider_
absl::Status ApplyProjectRuntimeContext()
absl::Status Initialize()
Initialize the context and load ROM if needed.
CommandContext(const Config &config)
Provider for symbol (label) resolution in disassembly.
Configuration for command context.
std::optional< std::string > project_context_path
std::optional< std::string > symbols_path
std::optional< std::string > rom_path
Rom * external_rom_context
Modern project structure with comprehensive settings consolidation.