rename handle to Run for cli commands

This commit is contained in:
scawful
2025-03-31 17:18:49 -04:00
parent 999c142a31
commit 26fc39dad0
6 changed files with 29 additions and 116 deletions

View File

@@ -16,77 +16,49 @@
namespace yaze {
namespace cli {
enum ColorCode {
FG_RED = 31,
FG_GREEN = 32,
FG_YELLOW = 33,
FG_BLUE = 36,
FG_MAGENTA = 35,
FG_DEFAULT = 39,
FG_RESET = 0,
FG_UNDERLINE = 4,
BG_RED = 41,
BG_GREEN = 42,
BG_BLUE = 44,
BG_DEFAULT = 49
};
class ColorModifier {
ColorCode code;
public:
explicit ColorModifier(ColorCode pCode) : code(pCode) {}
friend std::ostream& operator<<(std::ostream& os, const ColorModifier& mod) {
return os << "\033[" << mod.code << "m";
}
};
class CommandHandler {
public:
CommandHandler() = default;
virtual ~CommandHandler() = default;
virtual absl::Status handle(const std::vector<std::string>& arg_vec) = 0;
virtual absl::Status Run(const std::vector<std::string>& arg_vec) = 0;
Rom rom_;
};
class ApplyPatch : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override;
absl::Status Run(const std::vector<std::string>& arg_vec) override;
};
class AsarPatch : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override;
absl::Status Run(const std::vector<std::string>& arg_vec) override;
};
class CreatePatch : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override;
absl::Status Run(const std::vector<std::string>& arg_vec) override;
};
class Tile16Transfer : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override;
absl::Status Run(const std::vector<std::string>& arg_vec) override;
};
class Open : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override {
ColorModifier green(ColorCode::FG_GREEN);
ColorModifier blue(ColorCode::FG_BLUE);
ColorModifier reset(ColorCode::FG_RESET);
absl::Status Run(const std::vector<std::string>& arg_vec) override {
auto const& arg = arg_vec[0];
RETURN_IF_ERROR(rom_.LoadFromFile(arg))
std::cout << "Title: " << green << rom_.title() << std::endl;
std::cout << reset << "Size: " << blue << "0x" << std::hex << rom_.size()
<< reset << std::endl;
std::cout << "Title: " << rom_.title() << std::endl;
std::cout << "Size: 0x" << std::hex << rom_.size() << std::endl;
return absl::OkStatus();
}
};
class Backup : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override {
absl::Status Run(const std::vector<std::string>& arg_vec) override {
RETURN_IF_ERROR(rom_.LoadFromFile(arg_vec[0]))
if (arg_vec.size() == 2) {
// Optional filename added
@@ -100,12 +72,12 @@ class Backup : public CommandHandler {
class Compress : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override;
absl::Status Run(const std::vector<std::string>& arg_vec) override;
};
class Decompress : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override;
absl::Status Run(const std::vector<std::string>& arg_vec) override;
};
/**
@@ -116,7 +88,7 @@ class Decompress : public CommandHandler {
*/
class SnesToPcCommand : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override {
absl::Status Run(const std::vector<std::string>& arg_vec) override {
auto arg = arg_vec[0];
std::stringstream ss(arg.data());
uint32_t snes_address;
@@ -135,16 +107,14 @@ class SnesToPcCommand : public CommandHandler {
*/
class PcToSnesCommand : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override {
absl::Status Run(const std::vector<std::string>& arg_vec) override {
auto arg = arg_vec[0];
std::stringstream ss(arg.data());
uint32_t pc_address;
ss >> std::hex >> pc_address;
uint32_t snes_address = PcToSnes(pc_address);
ColorModifier blue(ColorCode::FG_BLUE);
std::cout << "SNES LoROM Address: ";
std::cout << blue << "$" << std::uppercase << std::hex << snes_address
<< "\n";
std::cout << "$" << std::uppercase << std::hex << snes_address << "\n";
return absl::OkStatus();
}
};
@@ -157,7 +127,7 @@ class PcToSnesCommand : public CommandHandler {
*/
class ReadFromRom : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override {
absl::Status Run(const std::vector<std::string>& arg_vec) override {
RETURN_IF_ERROR(rom_.LoadFromFile(arg_vec[0]))
std::stringstream ss(arg_vec[1].data());
@@ -195,7 +165,7 @@ class ReadFromRom : public CommandHandler {
*/
class Expand : public CommandHandler {
public:
absl::Status handle(const std::vector<std::string>& arg_vec) override {
absl::Status Run(const std::vector<std::string>& arg_vec) override {
RETURN_IF_ERROR(rom_.LoadFromFile(arg_vec[0]))
std::stringstream ss(arg_vec[1].data());
@@ -211,26 +181,6 @@ class Expand : public CommandHandler {
}
};
/**
* @brief Command handler for the CLI.
*/
struct Commands {
std::unordered_map<std::string, std::shared_ptr<CommandHandler>> handlers = {
{"-a", std::make_shared<ApplyPatch>()},
{"-asar", std::make_shared<AsarPatch>()},
{"-c", std::make_shared<CreatePatch>()},
{"-o", std::make_shared<Open>()},
{"-b", std::make_shared<Backup>()},
{"-x", std::make_shared<Expand>()},
{"-i", std::make_shared<Compress>()}, // Import
{"-e", std::make_shared<Decompress>()}, // Export
{"-s", std::make_shared<SnesToPcCommand>()},
{"-p", std::make_shared<PcToSnesCommand>()},
{"-t", std::make_shared<Tile16Transfer>()},
{"-r", std::make_shared<ReadFromRom>()} // Read from Rom
};
};
} // namespace cli
} // namespace yaze