aboutsummaryrefslogtreecommitdiff
path: root/src/zen/cmds/version.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-05-02 10:01:47 +0200
committerGitHub <[email protected]>2023-05-02 10:01:47 +0200
commit075d17f8ada47e990fe94606c3d21df409223465 (patch)
treee50549b766a2f3c354798a54ff73404217b4c9af /src/zen/cmds/version.cpp
parentfix: bundle shouldn't append content zip to zen (diff)
downloadarchived-zen-075d17f8ada47e990fe94606c3d21df409223465.tar.xz
archived-zen-075d17f8ada47e990fe94606c3d21df409223465.zip
moved source directories into `/src` (#264)
* moved source directories into `/src` * updated bundle.lua for new `src` path * moved some docs, icon * removed old test trees
Diffstat (limited to 'src/zen/cmds/version.cpp')
-rw-r--r--src/zen/cmds/version.cpp79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/zen/cmds/version.cpp b/src/zen/cmds/version.cpp
new file mode 100644
index 000000000..ba83b527d
--- /dev/null
+++ b/src/zen/cmds/version.cpp
@@ -0,0 +1,79 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "version.h"
+
+#include <zencore/config.h>
+#include <zencore/filesystem.h>
+#include <zencore/fmtutils.h>
+#include <zencore/logging.h>
+#include <zenhttp/httpcommon.h>
+#include <zenutil/zenserverprocess.h>
+
+#include <memory>
+
+ZEN_THIRD_PARTY_INCLUDES_START
+#include <cpr/cpr.h>
+ZEN_THIRD_PARTY_INCLUDES_END
+
+namespace zen {
+
+VersionCommand::VersionCommand()
+{
+ m_Options.add_options()("h,help", "Print help");
+ m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName), "[hosturl]");
+ m_Options.add_option("", "d", "detailed", "Detailed Version", cxxopts::value(m_DetailedVersion), "[detailedversion]");
+ m_Options.parse_positional({"hosturl"});
+}
+
+VersionCommand::~VersionCommand() = default;
+
+int
+VersionCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
+{
+ ZEN_UNUSED(GlobalOptions);
+ if (!ParseOptions(argc, argv))
+ {
+ return 0;
+ }
+
+ std::string Version;
+
+ if (m_HostName.empty())
+ {
+ if (m_DetailedVersion)
+ {
+ Version = ZEN_CFG_VERSION_BUILD_STRING_FULL;
+ }
+ else
+ {
+ Version = ZEN_CFG_VERSION;
+ }
+ }
+ else
+ {
+ const std::string UrlBase = fmt::format("{}/health", m_HostName);
+ cpr::Session Session;
+ std::string VersionRequest = fmt::format("{}/version{}", UrlBase, m_DetailedVersion ? "?detailed=true" : "");
+ Session.SetUrl(VersionRequest);
+ cpr::Response Response = Session.Get();
+ if (!zen::IsHttpSuccessCode(Response.status_code))
+ {
+ if (Response.status_code)
+ {
+ ZEN_ERROR("{} failed: {}: {} ({})", VersionRequest, Response.status_code, Response.reason, Response.text);
+ }
+ else
+ {
+ ZEN_ERROR("{} failed: {}", VersionRequest, Response.error.message);
+ }
+
+ return 1;
+ }
+ Version = Response.text;
+ }
+
+ zen::ConsoleLog().info("{}", Version);
+
+ return 0;
+}
+} // namespace zen