aboutsummaryrefslogtreecommitdiff
path: root/src/zen/cmds/print_cmd.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2025-09-05 13:02:27 +0200
committerGitHub Enterprise <[email protected]>2025-09-05 13:02:27 +0200
commit45b0307d42b22e04cee63467a8fdb898a2d8d552 (patch)
tree905b3eb62af89269be5b15f4c407d900ce86f7f3 /src/zen/cmds/print_cmd.cpp
parentAvoid mutating executable paths when copying files during full service instal... (diff)
downloadarchived-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.cpp38
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