diff options
| author | Dan Engelbrecht <[email protected]> | 2025-09-05 13:02:27 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-09-05 13:02:27 +0200 |
| commit | 45b0307d42b22e04cee63467a8fdb898a2d8d552 (patch) | |
| tree | 905b3eb62af89269be5b15f4c407d900ce86f7f3 /src/zen/cmds/print_cmd.cpp | |
| parent | Avoid mutating executable paths when copying files during full service instal... (diff) | |
| download | archived-zen-45b0307d42b22e04cee63467a8fdb898a2d8d552.tar.xz archived-zen-45b0307d42b22e04cee63467a8fdb898a2d8d552.zip | |
refactor zen command return value handling (#487)
- Improvement: Use consistent language for command line argument parsing errors
- Improvement: Changed zen command parsing errors to output help first and error last to make it easier to spot the error
- Improvement: Refactor zen command return codes to conform to valid Linux range (0-255)
kSuccess = 0,
kOtherError = 1,
kBadInput = 2,
kOutOfMemory = 16,
kOutOfDisk = 17,
kAssertError = 70,
kHttpOtherClientError = 80,
kHttpCantConnectError = 81,
kHttpNotFound = 66, // NotFound(404)
kHttpUnauthorized = 77, // Unauthorized(401),
kHttpSLLError = 82,
kHttpForbidden = 83, // Forbidden(403)
kHttpTimeout = 84, // RequestTimeout(408)
kHttpConflict = 85, // Conflict(409)
kHttpNoHost = 86,
kHttpOtherServerError = 90,
kHttpInternalServerError = 91, // InternalServerError(500)
kHttpServiceUnavailable = 69, // ServiceUnavailable(503)
kHttpBadGateway = 92, // BadGateway(502)
kHttpGatewayTimeout = 93, // GatewayTimeout(504)
Diffstat (limited to 'src/zen/cmds/print_cmd.cpp')
| -rw-r--r-- | src/zen/cmds/print_cmd.cpp | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/src/zen/cmds/print_cmd.cpp b/src/zen/cmds/print_cmd.cpp index fd6d92f28..c3c11a0ea 100644 --- a/src/zen/cmds/print_cmd.cpp +++ b/src/zen/cmds/print_cmd.cpp @@ -55,20 +55,20 @@ PrintCommand::PrintCommand() PrintCommand::~PrintCommand() = default; -int +void PrintCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) { ZEN_UNUSED(GlobalOptions); if (!ParseOptions(argc, argv)) { - return 0; + return; } // Validate arguments if (m_Filename.empty()) - throw std::runtime_error("No file specified"); + throw OptionParseException("'--source' is required", m_Options.help()); FileContents Fc; @@ -84,9 +84,7 @@ PrintCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) if (Fc.ErrorCode) { - ZEN_CONSOLE_ERROR("Failed to read file '{}': {}", m_Filename, Fc.ErrorCode.message()); - - return 1; + throw std::runtime_error(fmt::format("Failed to read file '{}': {}", m_Filename, Fc.ErrorCode.message())); } IoBuffer Data = Fc.Flatten(); @@ -158,11 +156,11 @@ PrintCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) if (FilteredResult != CbValidateError::None) { - ZEN_CONSOLE_ERROR("Object in package message file '{}' does not appear to be compact binary (validation error {:#x}: '{}')", - m_Filename, - uint32_t(FilteredResult), - ToString(FilteredResult)); - return 1; + throw std::runtime_error( + fmt::format("Object in package message file '{}' does not appear to be compact binary (validation error {:#x}: '{}')", + m_Filename, + uint32_t(FilteredResult), + ToString(FilteredResult))); } else { @@ -185,18 +183,16 @@ PrintCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) if (FilteredResult != CbValidateError::None) { - ZEN_CONSOLE_ERROR("Data in file '{}' does not appear to be compact binary (validation error {:#x}: '{}')", - m_Filename, - uint32_t(FilteredResult), - ToString(FilteredResult)); - return 1; + throw std::runtime_error(fmt::format("Data in file '{}' does not appear to be compact binary (validation error {:#x}: '{}')", + m_Filename, + uint32_t(FilteredResult), + ToString(FilteredResult))); } else { PrintCompactBinary(Data, m_ShowCbObjectTypeInfo); } } - return 0; } ////////////////////////////////////////////////////////////////////////// @@ -218,20 +214,20 @@ PrintPackageCommand::~PrintPackageCommand() { } -int +void PrintPackageCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) { ZEN_UNUSED(GlobalOptions); if (!ParseOptions(argc, argv)) { - return 0; + return; } // Validate arguments if (m_Filename.empty()) - throw std::runtime_error("No file specified"); + throw OptionParseException("'--source' is required", m_Options.help()); MakeSafeAbsolutePathÍnPlace(m_Filename); FileContents Fc = ReadFile(m_Filename); @@ -250,8 +246,6 @@ PrintPackageCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** ar { ZEN_ERROR("error: malformed package?"); } - - return 0; } } // namespace zen |