Base class for CLI command handlers. More...
#include <command_handler.h>
Inherited by yaze::cli::agent::TUICommandHandler, yaze::cli::handlers::DialogueListCommandHandler, yaze::cli::handlers::DialogueReadCommandHandler, yaze::cli::handlers::DialogueSearchCommandHandler, yaze::cli::handlers::DungeonDescribeRoomCommandHandler, yaze::cli::handlers::DungeonExportRoomCommandHandler, yaze::cli::handlers::DungeonGetRoomTilesCommandHandler, yaze::cli::handlers::DungeonListObjectsCommandHandler, yaze::cli::handlers::DungeonListSpritesCommandHandler, yaze::cli::handlers::DungeonSetRoomPropertyCommandHandler, yaze::cli::handlers::EmulatorClearBreakpointCommandHandler, yaze::cli::handlers::EmulatorGetMetricsCommandHandler, yaze::cli::handlers::EmulatorGetRegistersCommandHandler, yaze::cli::handlers::EmulatorGetStateCommandHandler, yaze::cli::handlers::EmulatorHoldButtonsCommandHandler, yaze::cli::handlers::EmulatorListBreakpointsCommandHandler, yaze::cli::handlers::EmulatorPauseCommandHandler, yaze::cli::handlers::EmulatorPressButtonsCommandHandler, yaze::cli::handlers::EmulatorReadMemoryCommandHandler, yaze::cli::handlers::EmulatorReleaseButtonsCommandHandler, yaze::cli::handlers::EmulatorResetCommandHandler, yaze::cli::handlers::EmulatorRunCommandHandler, yaze::cli::handlers::EmulatorSetBreakpointCommandHandler, yaze::cli::handlers::EmulatorStepCommandHandler, yaze::cli::handlers::EmulatorWriteMemoryCommandHandler, yaze::cli::handlers::GuiClickCommandHandler, yaze::cli::handlers::GuiDiscoverToolCommandHandler, yaze::cli::handlers::GuiPlaceTileCommandHandler, yaze::cli::handlers::GuiScreenshotCommandHandler, yaze::cli::handlers::HexReadCommandHandler, yaze::cli::handlers::HexSearchCommandHandler, yaze::cli::handlers::HexWriteCommandHandler, yaze::cli::handlers::MessageListCommandHandler, yaze::cli::handlers::MessageReadCommandHandler, yaze::cli::handlers::MessageSearchCommandHandler, yaze::cli::handlers::MusicInfoCommandHandler, yaze::cli::handlers::MusicListCommandHandler, yaze::cli::handlers::MusicTracksCommandHandler, yaze::cli::handlers::OverworldDescribeMapCommandHandler, yaze::cli::handlers::OverworldFindTileCommandHandler, yaze::cli::handlers::OverworldGetEntranceCommandHandler, yaze::cli::handlers::OverworldListSpritesCommandHandler, yaze::cli::handlers::OverworldListWarpsCommandHandler, yaze::cli::handlers::OverworldTileStatsCommandHandler, yaze::cli::handlers::PaletteAnalyzeCommandHandler, yaze::cli::handlers::PaletteGetColorsCommandHandler, yaze::cli::handlers::PaletteSetColorCommandHandler, yaze::cli::handlers::ProjectBuildCommandHandler, yaze::cli::handlers::ProjectInitCommandHandler, yaze::cli::handlers::ResourceListCommandHandler, yaze::cli::handlers::ResourceSearchCommandHandler, yaze::cli::handlers::RomDiffCommandHandler, yaze::cli::handlers::RomGenerateGoldenCommandHandler, yaze::cli::handlers::RomInfoCommandHandler, yaze::cli::handlers::RomValidateCommandHandler, yaze::cli::handlers::SimpleChatCommandHandler, yaze::cli::handlers::SpriteListCommandHandler, yaze::cli::handlers::SpritePaletteCommandHandler, and yaze::cli::handlers::SpritePropertiesCommandHandler.
Classes | |
struct | Descriptor |
struct | DescriptorEntry |
Public Member Functions | |
virtual | ~CommandHandler ()=default |
absl::Status | Run (const std::vector< std::string > &args, Rom *rom_context) |
Execute the command. | |
virtual std::string | GetName () const =0 |
Get the command name. | |
virtual Descriptor | Describe () const |
Provide metadata for TUI/help summaries. | |
Protected Member Functions | |
virtual absl::Status | ValidateArgs (const ArgumentParser &parser)=0 |
Validate command arguments. | |
virtual absl::Status | Execute (Rom *rom, const ArgumentParser &parser, OutputFormatter &formatter)=0 |
Execute the command business logic. | |
virtual std::string | GetUsage () const =0 |
Get the command usage string. | |
virtual bool | RequiresLabels () const |
Check if the command requires ROM labels. | |
virtual std::string | GetDefaultFormat () const |
Get the default output format ("json" or "text") | |
virtual std::string | GetOutputTitle () const |
Get the output title for formatting. | |
Base class for CLI command handlers.
Provides a consistent structure for implementing CLI commands with:
Example usage:
Definition at line 43 of file command_handler.h.
|
virtualdefault |
absl::Status yaze::cli::resources::CommandHandler::Run | ( | const std::vector< std::string > & | args, |
Rom * | rom_context | ||
) |
Execute the command.
This is the main entry point that orchestrates:
Definition at line 30 of file command_handler.cc.
References ASSIGN_OR_RETURN, yaze::cli::resources::OutputFormatter::BeginObject(), yaze::cli::resources::OutputFormatter::EndObject(), yaze::cli::resources::CommandContext::EnsureLabelsLoaded(), Execute(), yaze::cli::resources::CommandContext::Config::external_rom_context, yaze::cli::resources::CommandContext::Config::format, yaze::cli::resources::OutputFormatter::FromString(), GetDefaultFormat(), GetOutputTitle(), yaze::cli::resources::CommandContext::GetRom(), yaze::cli::resources::ArgumentParser::GetString(), GetUsage(), yaze::cli::resources::ArgumentParser::HasFlag(), yaze::cli::resources::OutputFormatter::Print(), RequiresLabels(), RETURN_IF_ERROR, yaze::cli::resources::CommandContext::Config::rom_path, yaze::cli::resources::CommandContext::Config::use_mock_rom, and ValidateArgs().
Referenced by yaze::cli::agent::HandleDungeonDescribeRoomCommand(), yaze::cli::agent::HandleDungeonListSpritesCommand(), yaze::cli::agent::HandleOverworldDescribeMapCommand(), yaze::cli::agent::HandleOverworldFindTileCommand(), yaze::cli::agent::HandleOverworldListWarpsCommand(), yaze::cli::agent::HandleResourceListCommand(), and yaze::cli::agent::HandleResourceSearchCommand().
|
pure virtual |
Get the command name.
Override this to provide a unique identifier for the command. This is used for command registration and lookup.
Implemented in yaze::cli::handlers::SimpleChatCommandHandler, yaze::cli::handlers::DialogueListCommandHandler, yaze::cli::handlers::DialogueReadCommandHandler, yaze::cli::handlers::DialogueSearchCommandHandler, yaze::cli::handlers::DungeonListSpritesCommandHandler, yaze::cli::handlers::DungeonDescribeRoomCommandHandler, yaze::cli::handlers::DungeonExportRoomCommandHandler, yaze::cli::handlers::DungeonListObjectsCommandHandler, yaze::cli::handlers::DungeonGetRoomTilesCommandHandler, yaze::cli::handlers::DungeonSetRoomPropertyCommandHandler, yaze::cli::handlers::MessageListCommandHandler, yaze::cli::handlers::MessageReadCommandHandler, yaze::cli::handlers::MessageSearchCommandHandler, yaze::cli::handlers::MusicListCommandHandler, yaze::cli::handlers::MusicInfoCommandHandler, yaze::cli::handlers::MusicTracksCommandHandler, yaze::cli::handlers::OverworldFindTileCommandHandler, yaze::cli::handlers::OverworldDescribeMapCommandHandler, yaze::cli::handlers::OverworldListWarpsCommandHandler, yaze::cli::handlers::OverworldListSpritesCommandHandler, yaze::cli::handlers::OverworldGetEntranceCommandHandler, yaze::cli::handlers::OverworldTileStatsCommandHandler, yaze::cli::handlers::HexReadCommandHandler, yaze::cli::handlers::HexWriteCommandHandler, yaze::cli::handlers::HexSearchCommandHandler, yaze::cli::handlers::PaletteGetColorsCommandHandler, yaze::cli::handlers::PaletteSetColorCommandHandler, yaze::cli::handlers::PaletteAnalyzeCommandHandler, yaze::cli::handlers::SpriteListCommandHandler, yaze::cli::handlers::SpritePropertiesCommandHandler, yaze::cli::handlers::SpritePaletteCommandHandler, yaze::cli::handlers::ProjectInitCommandHandler, yaze::cli::handlers::ProjectBuildCommandHandler, yaze::cli::handlers::RomInfoCommandHandler, yaze::cli::handlers::RomValidateCommandHandler, yaze::cli::handlers::RomDiffCommandHandler, yaze::cli::handlers::RomGenerateGoldenCommandHandler, yaze::cli::handlers::EmulatorStepCommandHandler, yaze::cli::handlers::EmulatorRunCommandHandler, yaze::cli::handlers::EmulatorPauseCommandHandler, yaze::cli::handlers::EmulatorResetCommandHandler, yaze::cli::handlers::EmulatorGetStateCommandHandler, yaze::cli::handlers::EmulatorSetBreakpointCommandHandler, yaze::cli::handlers::EmulatorClearBreakpointCommandHandler, yaze::cli::handlers::EmulatorListBreakpointsCommandHandler, yaze::cli::handlers::EmulatorReadMemoryCommandHandler, yaze::cli::handlers::EmulatorWriteMemoryCommandHandler, yaze::cli::handlers::EmulatorGetRegistersCommandHandler, yaze::cli::handlers::EmulatorGetMetricsCommandHandler, yaze::cli::handlers::EmulatorPressButtonsCommandHandler, yaze::cli::handlers::EmulatorReleaseButtonsCommandHandler, yaze::cli::handlers::EmulatorHoldButtonsCommandHandler, yaze::cli::handlers::GuiPlaceTileCommandHandler, yaze::cli::handlers::GuiClickCommandHandler, yaze::cli::handlers::GuiDiscoverToolCommandHandler, yaze::cli::handlers::GuiScreenshotCommandHandler, yaze::cli::handlers::ResourceListCommandHandler, and yaze::cli::handlers::ResourceSearchCommandHandler.
|
virtual |
Provide metadata for TUI/help summaries.
Definition at line 7 of file command_handler.cc.
References yaze::cli::resources::CommandHandler::Descriptor::display_name, GetUsage(), yaze::cli::resources::CommandHandler::Descriptor::summary, and yaze::cli::resources::CommandHandler::Descriptor::todo_reference.
|
protectedpure virtual |
Validate command arguments.
Override this to check required arguments and perform custom validation. Called before Execute().
Implemented in yaze::cli::handlers::SimpleChatCommandHandler, yaze::cli::handlers::DialogueListCommandHandler, yaze::cli::handlers::DialogueReadCommandHandler, yaze::cli::handlers::DialogueSearchCommandHandler, yaze::cli::handlers::DungeonListSpritesCommandHandler, yaze::cli::handlers::DungeonDescribeRoomCommandHandler, yaze::cli::handlers::DungeonExportRoomCommandHandler, yaze::cli::handlers::DungeonListObjectsCommandHandler, yaze::cli::handlers::DungeonGetRoomTilesCommandHandler, yaze::cli::handlers::DungeonSetRoomPropertyCommandHandler, yaze::cli::handlers::MessageListCommandHandler, yaze::cli::handlers::MessageReadCommandHandler, yaze::cli::handlers::MessageSearchCommandHandler, yaze::cli::handlers::MusicListCommandHandler, yaze::cli::handlers::MusicInfoCommandHandler, yaze::cli::handlers::MusicTracksCommandHandler, yaze::cli::handlers::OverworldFindTileCommandHandler, yaze::cli::handlers::OverworldDescribeMapCommandHandler, yaze::cli::handlers::OverworldListWarpsCommandHandler, yaze::cli::handlers::OverworldListSpritesCommandHandler, yaze::cli::handlers::OverworldGetEntranceCommandHandler, yaze::cli::handlers::OverworldTileStatsCommandHandler, yaze::cli::handlers::HexReadCommandHandler, yaze::cli::handlers::HexWriteCommandHandler, yaze::cli::handlers::HexSearchCommandHandler, yaze::cli::handlers::PaletteGetColorsCommandHandler, yaze::cli::handlers::PaletteSetColorCommandHandler, yaze::cli::handlers::PaletteAnalyzeCommandHandler, yaze::cli::handlers::SpriteListCommandHandler, yaze::cli::handlers::SpritePropertiesCommandHandler, yaze::cli::handlers::SpritePaletteCommandHandler, yaze::cli::handlers::ProjectInitCommandHandler, yaze::cli::handlers::ProjectBuildCommandHandler, yaze::cli::handlers::RomInfoCommandHandler, yaze::cli::handlers::RomValidateCommandHandler, yaze::cli::handlers::RomDiffCommandHandler, yaze::cli::handlers::RomGenerateGoldenCommandHandler, yaze::cli::handlers::EmulatorStepCommandHandler, yaze::cli::handlers::EmulatorRunCommandHandler, yaze::cli::handlers::EmulatorPauseCommandHandler, yaze::cli::handlers::EmulatorResetCommandHandler, yaze::cli::handlers::EmulatorGetStateCommandHandler, yaze::cli::handlers::EmulatorSetBreakpointCommandHandler, yaze::cli::handlers::EmulatorClearBreakpointCommandHandler, yaze::cli::handlers::EmulatorListBreakpointsCommandHandler, yaze::cli::handlers::EmulatorReadMemoryCommandHandler, yaze::cli::handlers::EmulatorWriteMemoryCommandHandler, yaze::cli::handlers::EmulatorGetRegistersCommandHandler, yaze::cli::handlers::EmulatorGetMetricsCommandHandler, yaze::cli::handlers::EmulatorPressButtonsCommandHandler, yaze::cli::handlers::EmulatorReleaseButtonsCommandHandler, yaze::cli::handlers::EmulatorHoldButtonsCommandHandler, yaze::cli::handlers::GuiPlaceTileCommandHandler, yaze::cli::handlers::GuiClickCommandHandler, yaze::cli::handlers::GuiDiscoverToolCommandHandler, yaze::cli::handlers::GuiScreenshotCommandHandler, yaze::cli::handlers::ResourceListCommandHandler, and yaze::cli::handlers::ResourceSearchCommandHandler.
Referenced by Run().
|
protectedpure virtual |
Execute the command business logic.
Override this to implement command-specific functionality. The ROM is guaranteed to be loaded and labels initialized.
Implemented in yaze::cli::handlers::SimpleChatCommandHandler, yaze::cli::handlers::DialogueListCommandHandler, yaze::cli::handlers::DialogueReadCommandHandler, yaze::cli::handlers::DialogueSearchCommandHandler, yaze::cli::handlers::DungeonListSpritesCommandHandler, yaze::cli::handlers::DungeonDescribeRoomCommandHandler, yaze::cli::handlers::DungeonExportRoomCommandHandler, yaze::cli::handlers::DungeonListObjectsCommandHandler, yaze::cli::handlers::DungeonGetRoomTilesCommandHandler, yaze::cli::handlers::DungeonSetRoomPropertyCommandHandler, yaze::cli::handlers::MessageListCommandHandler, yaze::cli::handlers::MessageReadCommandHandler, yaze::cli::handlers::MessageSearchCommandHandler, yaze::cli::handlers::MusicListCommandHandler, yaze::cli::handlers::MusicInfoCommandHandler, yaze::cli::handlers::MusicTracksCommandHandler, yaze::cli::handlers::OverworldFindTileCommandHandler, yaze::cli::handlers::OverworldDescribeMapCommandHandler, yaze::cli::handlers::OverworldListWarpsCommandHandler, yaze::cli::handlers::OverworldListSpritesCommandHandler, yaze::cli::handlers::OverworldGetEntranceCommandHandler, yaze::cli::handlers::OverworldTileStatsCommandHandler, yaze::cli::handlers::HexReadCommandHandler, yaze::cli::handlers::HexWriteCommandHandler, yaze::cli::handlers::HexSearchCommandHandler, yaze::cli::handlers::PaletteGetColorsCommandHandler, yaze::cli::handlers::PaletteSetColorCommandHandler, yaze::cli::handlers::PaletteAnalyzeCommandHandler, yaze::cli::handlers::SpriteListCommandHandler, yaze::cli::handlers::SpritePropertiesCommandHandler, yaze::cli::handlers::SpritePaletteCommandHandler, yaze::cli::handlers::ProjectInitCommandHandler, yaze::cli::handlers::ProjectBuildCommandHandler, yaze::cli::handlers::RomInfoCommandHandler, yaze::cli::handlers::RomValidateCommandHandler, yaze::cli::handlers::RomDiffCommandHandler, yaze::cli::handlers::RomGenerateGoldenCommandHandler, yaze::cli::handlers::EmulatorStepCommandHandler, yaze::cli::handlers::EmulatorRunCommandHandler, yaze::cli::handlers::EmulatorPauseCommandHandler, yaze::cli::handlers::EmulatorResetCommandHandler, yaze::cli::handlers::EmulatorGetStateCommandHandler, yaze::cli::handlers::EmulatorSetBreakpointCommandHandler, yaze::cli::handlers::EmulatorClearBreakpointCommandHandler, yaze::cli::handlers::EmulatorListBreakpointsCommandHandler, yaze::cli::handlers::EmulatorReadMemoryCommandHandler, yaze::cli::handlers::EmulatorWriteMemoryCommandHandler, yaze::cli::handlers::EmulatorGetRegistersCommandHandler, yaze::cli::handlers::EmulatorGetMetricsCommandHandler, yaze::cli::handlers::EmulatorPressButtonsCommandHandler, yaze::cli::handlers::EmulatorReleaseButtonsCommandHandler, yaze::cli::handlers::EmulatorHoldButtonsCommandHandler, yaze::cli::handlers::GuiPlaceTileCommandHandler, yaze::cli::handlers::GuiClickCommandHandler, yaze::cli::handlers::GuiDiscoverToolCommandHandler, yaze::cli::handlers::GuiScreenshotCommandHandler, yaze::cli::handlers::ResourceListCommandHandler, and yaze::cli::handlers::ResourceSearchCommandHandler.
Referenced by Run().
|
protectedpure virtual |
Get the command usage string.
Implemented in yaze::cli::handlers::DialogueListCommandHandler, yaze::cli::handlers::DialogueReadCommandHandler, yaze::cli::handlers::DialogueSearchCommandHandler, yaze::cli::handlers::DungeonListSpritesCommandHandler, yaze::cli::handlers::DungeonDescribeRoomCommandHandler, yaze::cli::handlers::DungeonExportRoomCommandHandler, yaze::cli::handlers::DungeonListObjectsCommandHandler, yaze::cli::handlers::DungeonGetRoomTilesCommandHandler, yaze::cli::handlers::DungeonSetRoomPropertyCommandHandler, yaze::cli::handlers::MessageListCommandHandler, yaze::cli::handlers::MessageReadCommandHandler, yaze::cli::handlers::MessageSearchCommandHandler, yaze::cli::handlers::MusicListCommandHandler, yaze::cli::handlers::MusicInfoCommandHandler, yaze::cli::handlers::MusicTracksCommandHandler, yaze::cli::handlers::OverworldFindTileCommandHandler, yaze::cli::handlers::OverworldDescribeMapCommandHandler, yaze::cli::handlers::OverworldListWarpsCommandHandler, yaze::cli::handlers::OverworldListSpritesCommandHandler, yaze::cli::handlers::OverworldGetEntranceCommandHandler, yaze::cli::handlers::OverworldTileStatsCommandHandler, yaze::cli::handlers::HexReadCommandHandler, yaze::cli::handlers::HexWriteCommandHandler, yaze::cli::handlers::HexSearchCommandHandler, yaze::cli::handlers::PaletteGetColorsCommandHandler, yaze::cli::handlers::PaletteSetColorCommandHandler, yaze::cli::handlers::PaletteAnalyzeCommandHandler, yaze::cli::handlers::SpriteListCommandHandler, yaze::cli::handlers::SpritePropertiesCommandHandler, yaze::cli::handlers::SpritePaletteCommandHandler, yaze::cli::handlers::ProjectInitCommandHandler, yaze::cli::handlers::ProjectBuildCommandHandler, yaze::cli::handlers::RomInfoCommandHandler, yaze::cli::handlers::RomValidateCommandHandler, yaze::cli::handlers::RomDiffCommandHandler, yaze::cli::handlers::RomGenerateGoldenCommandHandler, yaze::cli::handlers::EmulatorStepCommandHandler, yaze::cli::handlers::EmulatorRunCommandHandler, yaze::cli::handlers::EmulatorPauseCommandHandler, yaze::cli::handlers::EmulatorResetCommandHandler, yaze::cli::handlers::EmulatorGetStateCommandHandler, yaze::cli::handlers::EmulatorSetBreakpointCommandHandler, yaze::cli::handlers::EmulatorClearBreakpointCommandHandler, yaze::cli::handlers::EmulatorListBreakpointsCommandHandler, yaze::cli::handlers::EmulatorReadMemoryCommandHandler, yaze::cli::handlers::EmulatorWriteMemoryCommandHandler, yaze::cli::handlers::EmulatorGetRegistersCommandHandler, yaze::cli::handlers::EmulatorGetMetricsCommandHandler, yaze::cli::handlers::EmulatorPressButtonsCommandHandler, yaze::cli::handlers::EmulatorReleaseButtonsCommandHandler, yaze::cli::handlers::EmulatorHoldButtonsCommandHandler, yaze::cli::handlers::GuiPlaceTileCommandHandler, yaze::cli::handlers::GuiClickCommandHandler, yaze::cli::handlers::GuiDiscoverToolCommandHandler, yaze::cli::handlers::GuiScreenshotCommandHandler, yaze::cli::handlers::ResourceListCommandHandler, yaze::cli::handlers::ResourceSearchCommandHandler, and yaze::cli::handlers::SimpleChatCommandHandler.
Referenced by Describe(), and Run().
|
inlineprotectedvirtual |
Check if the command requires ROM labels.
Override to return false if labels are not needed.
Definition at line 113 of file command_handler.h.
Referenced by Run().
|
inlineprotectedvirtual |
Get the default output format ("json" or "text")
Definition at line 118 of file command_handler.h.
Referenced by Run().
|
inlineprotectedvirtual |
Get the output title for formatting.
Definition at line 123 of file command_handler.h.
Referenced by Run().