Value: class name##CommandHandler : public CommandHandler { \
public: \
std::string GetName() const override { return #name; } \
std::string GetUsage() const override { return usage_str; } \
\
protected: \
absl::Status ValidateArgs(const ArgumentParser& parser) override \
validate_body absl::Status \
Execute(Rom* rom, const ArgumentParser& parser, \
OutputFormatter& formatter) override execute_body \
};
Helper macro for creating simple command handlers.
Usage:
"agent resource-list --type <type> [--format <table|json>]",
{ return parser.RequireArgs({"type"}); },
{
auto type = parser.GetString("type").value();
ResourceContextBuilder builder(rom);
auto labels = builder.GetLabels(type);
for (const auto& [key, value] : *labels) {
formatter.AddField(key, value);
}
return absl::OkStatus();
}
)
#define DEFINE_COMMAND_HANDLER(name, usage_str, validate_body, execute_body)
Helper macro for creating simple command handlers.
Definition at line 234 of file command_handler.h.