10 descriptor.
summary =
"Command summary not provided.";
23#include "absl/strings/str_format.h"
37 if (!validation_status.ok()) {
38 std::cerr <<
"Error: " << validation_status.message() <<
"\n\n";
39 std::cerr <<
"Usage: " <<
GetUsage() <<
"\n";
40 return validation_status;
48 if (!formatter_or.ok()) {
49 return formatter_or.status();
56 config.
format = format_str;
59 if (
auto rom_path = parser.
GetString(
"rom"); rom_path.has_value()) {
80 auto execute_status =
Execute(rom, parser, formatter);
81 if (!execute_status.ok()) {
82 return execute_status;
89 return absl::OkStatus();
The Rom class is used to load, save, and modify Rom data.
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)
bool HasFlag(const std::string &name) const
Check if a flag is present.
Encapsulates common context for CLI command execution.
absl::StatusOr< Rom * > GetRom()
Get the ROM instance (loads if not already loaded)
absl::Status EnsureLabelsLoaded(Rom *rom)
Ensure resource labels are loaded.
virtual bool RequiresLabels() const
Check if the command requires ROM labels.
absl::Status Run(const std::vector< std::string > &args, Rom *rom_context)
Execute the command.
virtual std::string GetUsage() const =0
Get the command usage string.
virtual absl::Status Execute(Rom *rom, const ArgumentParser &parser, OutputFormatter &formatter)=0
Execute the command business logic.
virtual std::string GetOutputTitle() const
Get the output title for formatting.
virtual std::string GetDefaultFormat() const
Get the default output format ("json" or "text")
virtual Descriptor Describe() const
Provide metadata for TUI/help summaries.
virtual absl::Status ValidateArgs(const ArgumentParser &parser)=0
Validate command arguments.
#define RETURN_IF_ERROR(expression)
#define ASSIGN_OR_RETURN(type_variable_name, expression)
Main namespace for the application.
Configuration for command context.
std::optional< std::string > rom_path
Rom * external_rom_context
std::string todo_reference