#ifndef YAZE_SRC_CLI_MODERN_CLI_H_ #define YAZE_SRC_CLI_MODERN_CLI_H_ #include #include #include #include #include "absl/status/status.h" #include "cli/z3ed.h" namespace yaze { namespace cli { struct CommandInfo { std::string name; std::string description; std::string usage; std::function&)> handler; }; class ModernCLI { public: ModernCLI(); absl::Status Run(int argc, char* argv[]); CommandHandler* GetCommandHandler(const std::string& name); void PrintTopLevelHelp() const; void PrintCategoryHelp(const std::string& category) const; void PrintCommandSummary() const; std::map commands_; private: void SetupCommands(); void ShowHelp(); void ShowCategoryHelp(const std::string& category); void ShowCommandSummary() const; // Command Handlers absl::Status HandleAsarPatchCommand(const std::vector& args); absl::Status HandleBpsPatchCommand(const std::vector& args); absl::Status HandleExtractSymbolsCommand(const std::vector& args); absl::Status HandleAgentCommand(const std::vector& args); absl::Status HandleCollabCommand(const std::vector& args); absl::Status HandleProjectBuildCommand(const std::vector& args); absl::Status HandleProjectInitCommand(const std::vector& args); absl::Status HandleRomInfoCommand(const std::vector& args); absl::Status HandleRomGenerateGoldenCommand(const std::vector& args); absl::Status HandleRomDiffCommand(const std::vector& args); absl::Status HandleDungeonExportCommand(const std::vector& args); absl::Status HandleDungeonListObjectsCommand(const std::vector& args); absl::Status HandleGfxExportCommand(const std::vector& args); absl::Status HandleGfxImportCommand(const std::vector& args); absl::Status HandleCommandPaletteCommand(const std::vector& args); absl::Status HandlePaletteExportCommand(const std::vector& args); absl::Status HandlePaletteImportCommand(const std::vector& args); absl::Status HandlePaletteCommand(const std::vector& args); absl::Status HandleRomValidateCommand(const std::vector& args); absl::Status HandleOverworldGetTileCommand(const std::vector& args); absl::Status HandleOverworldFindTileCommand(const std::vector& args); absl::Status HandleOverworldDescribeMapCommand(const std::vector& args); absl::Status HandleOverworldListWarpsCommand(const std::vector& args); absl::Status HandleOverworldSetTileCommand(const std::vector& args); absl::Status HandleSpriteCreateCommand(const std::vector& args); absl::Status HandleChatEntryCommand(const std::vector& args); absl::Status HandleProposalCommand(const std::vector& args); absl::Status HandleWidgetCommand(const std::vector& args); }; } // namespace cli } // namespace yaze #endif // YAZE_SRC_CLI_MODERN_CLI_H_