aboutsummaryrefslogtreecommitdiff
path: root/src/zen/cmds/serve_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/serve_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/serve_cmd.cpp')
-rw-r--r--src/zen/cmds/serve_cmd.cpp22
1 files changed, 9 insertions, 13 deletions
diff --git a/src/zen/cmds/serve_cmd.cpp b/src/zen/cmds/serve_cmd.cpp
index cfaa12bc0..49389bcdf 100644
--- a/src/zen/cmds/serve_cmd.cpp
+++ b/src/zen/cmds/serve_cmd.cpp
@@ -34,19 +34,19 @@ ServeCommand::~ServeCommand()
{
}
-int
+void
ServeCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
ZEN_UNUSED(GlobalOptions);
if (!ParseOptions(argc, argv))
{
- return 0;
+ return;
}
if (m_ProjectName.empty())
{
- throw zen::OptionParseException("command requires a project");
+ throw OptionParseException("'--project' is required", m_Options.help());
}
if (m_OplogName.empty())
@@ -58,18 +58,18 @@ ServeCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
}
else
{
- throw zen::OptionParseException("command requires an oplog");
+ throw OptionParseException("'--oplog' is required", m_Options.help());
}
}
if (m_RootPath.empty())
{
- throw zen::OptionParseException("command requires a root path");
+ throw OptionParseException("'--path' is required", m_Options.help());
}
if (!IsDir(m_RootPath))
{
- throw zen::OptionParseException(fmt::format("path must exist and must be a directory: '{}'", m_RootPath));
+ throw std::runtime_error(fmt::format("'--path' ('{}') must exist and must be a directory", m_RootPath));
}
uint16_t ServerPort = 0;
@@ -95,7 +95,7 @@ ServeCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
ZEN_CONSOLE_ERROR("Failed to spawn server on port {}: '{}'", ServerPort, Ex.what());
- throw zen::OptionParseException("unable to resolve server specification (even after spawning server)");
+ throw std::runtime_error("Unable to resolve server specification (even after spawning server)");
}
}
else
@@ -197,8 +197,7 @@ ServeCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
if (auto NewProjectResponse = Client.Post(ProjectUri, Project.Save()); !NewProjectResponse)
{
- // TODO: include details
- throw std::runtime_error("failed to create project");
+ NewProjectResponse.ThrowError("Failed to create project");
}
}
@@ -212,8 +211,7 @@ ServeCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
if (auto NewOplogResponse = Client.Post(ProjectOplogUri, Oplog.Save()); !NewOplogResponse)
{
- // TODO: include details
- throw std::runtime_error("failed to create oplog");
+ NewOplogResponse.ThrowError("Failed to create oplog");
}
}
@@ -233,8 +231,6 @@ ServeCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
#if ZEN_PLATFORM_WINDOWS
_getch(); // TEMPORARY HACK
#endif
-
- return 0;
}
} // namespace zen