yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
validation_tool.h
Go to the documentation of this file.
1
11#ifndef YAZE_SRC_CLI_SERVICE_AGENT_TOOLS_VALIDATION_TOOL_H_
12#define YAZE_SRC_CLI_SERVICE_AGENT_TOOLS_VALIDATION_TOOL_H_
13
14#include <cstdint>
15#include <string>
16#include <vector>
17
18#include "absl/status/status.h"
19#include "absl/status/statusor.h"
21
22namespace yaze {
23namespace cli {
24namespace agent {
25namespace tools {
26
32
34 std::string category; // "header", "checksum", "sprites", "tiles", etc.
35 std::string message;
36 uint32_t address = 0; // Relevant address (if applicable)
37
38 std::string SeverityString() const {
39 switch (severity) {
40 case Severity::kInfo:
41 return "info";
43 return "warning";
45 return "error";
47 return "critical";
48 }
49 return "unknown";
50 }
51};
52
57 protected:
61 std::string FormatIssuesAsJson(
62 const std::vector<ValidationIssue>& issues) const;
63
67 std::string FormatIssuesAsText(
68 const std::vector<ValidationIssue>& issues) const;
69};
70
83 public:
84 std::string GetName() const override { return "rom-validate"; }
85
86 std::string GetDescription() const {
87 return "Validate ROM header, checksums, and structure";
88 }
89
90 std::string GetUsage() const override {
91 return "rom-validate --rom=<path> [--format=<json|text>]";
92 }
93
94 protected:
95 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
96 return parser.RequireArgs({"rom"});
97 }
98
99 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
100 resources::OutputFormatter& formatter) override;
101
102 public:
103 // Validation methods (public for use by ValidateAllTool)
104 std::vector<ValidationIssue> ValidateHeader(Rom* rom);
105 std::vector<ValidationIssue> ValidateChecksum(Rom* rom);
106 std::vector<ValidationIssue> ValidateSize(Rom* rom);
107};
108
121 public:
122 std::string GetName() const override { return "data-validate"; }
123
124 std::string GetDescription() const {
125 return "Validate game data structures (sprites, tiles, palettes)";
126 }
127
128 std::string GetUsage() const override {
129 return "data-validate --type=<sprites|tiles|palettes|all> [--format=<json|text>]";
130 }
131
132 protected:
133 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
134 return parser.RequireArgs({"type"});
135 }
136
137 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
138 resources::OutputFormatter& formatter) override;
139
140 public:
141 // Validation methods (public for use by ValidateAllTool)
142 std::vector<ValidationIssue> ValidateSprites(Rom* rom);
143 std::vector<ValidationIssue> ValidateTiles(Rom* rom);
144 std::vector<ValidationIssue> ValidatePalettes(Rom* rom);
145 std::vector<ValidationIssue> ValidateEntrances(Rom* rom);
146};
147
160 public:
161 std::string GetName() const override { return "patch-check"; }
162
163 std::string GetDescription() const {
164 return "Check ROM compatibility with a patch file";
165 }
166
167 std::string GetUsage() const override {
168 return "patch-check --patch=<path> [--format=<json|text>]";
169 }
170
171 protected:
172 absl::Status ValidateArgs(const resources::ArgumentParser& parser) override {
173 return parser.RequireArgs({"patch"});
174 }
175
176 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
177 resources::OutputFormatter& formatter) override;
178
179 private:
180 std::vector<ValidationIssue> CheckFreeSpace(Rom* rom);
181 std::vector<ValidationIssue> CheckHooks(Rom* rom,
182 const std::string& patch_path);
183};
184
193 public:
194 std::string GetName() const override { return "validate-all"; }
195
196 std::string GetDescription() const {
197 return "Run comprehensive validation suite on ROM";
198 }
199
200 std::string GetUsage() const override {
201 return "validate-all [--strict] [--format=<json|text>]";
202 }
203
204 protected:
205 absl::Status ValidateArgs(
206 const resources::ArgumentParser& /*parser*/) override {
207 return absl::OkStatus();
208 }
209
210 absl::Status Execute(Rom* rom, const resources::ArgumentParser& parser,
211 resources::OutputFormatter& formatter) override;
212};
213
214} // namespace tools
215} // namespace agent
216} // namespace cli
217} // namespace yaze
218
219#endif // YAZE_SRC_CLI_SERVICE_AGENT_TOOLS_VALIDATION_TOOL_H_
220
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:24
std::string GetUsage() const override
Get the command usage string.
std::vector< ValidationIssue > ValidateTiles(Rom *rom)
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::vector< ValidationIssue > ValidateSprites(Rom *rom)
std::vector< ValidationIssue > ValidateEntrances(Rom *rom)
std::vector< ValidationIssue > ValidatePalettes(Rom *rom)
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetName() const override
Get the command name.
Check ROM compatibility with patches.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::string GetName() const override
Get the command name.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
std::string GetUsage() const override
Get the command usage string.
std::vector< ValidationIssue > CheckHooks(Rom *rom, const std::string &patch_path)
std::vector< ValidationIssue > CheckFreeSpace(Rom *rom)
Validate ROM header and checksums.
std::string GetUsage() const override
Get the command usage string.
std::vector< ValidationIssue > ValidateSize(Rom *rom)
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
std::vector< ValidationIssue > ValidateChecksum(Rom *rom)
std::vector< ValidationIssue > ValidateHeader(Rom *rom)
std::string GetName() const override
Get the command name.
absl::Status ValidateArgs(const resources::ArgumentParser &parser) override
Validate command arguments.
Run comprehensive validation suite.
std::string GetUsage() const override
Get the command usage string.
std::string GetName() const override
Get the command name.
absl::Status ValidateArgs(const resources::ArgumentParser &) override
Validate command arguments.
absl::Status Execute(Rom *rom, const resources::ArgumentParser &parser, resources::OutputFormatter &formatter) override
Execute the command business logic.
Base class for validation tools.
std::string FormatIssuesAsText(const std::vector< ValidationIssue > &issues) const
Format validation issues as text.
std::string FormatIssuesAsJson(const std::vector< ValidationIssue > &issues) const
Format validation issues as JSON.
Utility for parsing common CLI argument patterns.
absl::Status RequireArgs(const std::vector< std::string > &required) const
Validate that required arguments are present.
Base class for CLI command handlers.
Utility for consistent output formatting across commands.
Validation result with severity level.