aboutsummaryrefslogtreecommitdiff
path: root/src/zennomad/nomadconfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zennomad/nomadconfig.cpp')
-rw-r--r--src/zennomad/nomadconfig.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/zennomad/nomadconfig.cpp b/src/zennomad/nomadconfig.cpp
new file mode 100644
index 000000000..d55b3da9a
--- /dev/null
+++ b/src/zennomad/nomadconfig.cpp
@@ -0,0 +1,91 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include <zennomad/nomadconfig.h>
+
+namespace zen::nomad {
+
+bool
+NomadConfig::Validate() const
+{
+ if (ServerUrl.empty())
+ {
+ return false;
+ }
+
+ if (BinDistribution == BinaryDistribution::PreDeployed && BinaryPath.empty())
+ {
+ return false;
+ }
+
+ if (BinDistribution == BinaryDistribution::Artifact && ArtifactSource.empty())
+ {
+ return false;
+ }
+
+ if (TaskDriver == Driver::Docker && DockerImage.empty())
+ {
+ return false;
+ }
+
+ return true;
+}
+
+const char*
+ToString(Driver D)
+{
+ switch (D)
+ {
+ case Driver::RawExec:
+ return "raw_exec";
+ case Driver::Docker:
+ return "docker";
+ }
+ return "raw_exec";
+}
+
+const char*
+ToString(BinaryDistribution Dist)
+{
+ switch (Dist)
+ {
+ case BinaryDistribution::PreDeployed:
+ return "predeployed";
+ case BinaryDistribution::Artifact:
+ return "artifact";
+ }
+ return "predeployed";
+}
+
+bool
+FromString(Driver& OutDriver, std::string_view Str)
+{
+ if (Str == "raw_exec")
+ {
+ OutDriver = Driver::RawExec;
+ return true;
+ }
+ if (Str == "docker")
+ {
+ OutDriver = Driver::Docker;
+ return true;
+ }
+ return false;
+}
+
+bool
+FromString(BinaryDistribution& OutDist, std::string_view Str)
+{
+ if (Str == "predeployed")
+ {
+ OutDist = BinaryDistribution::PreDeployed;
+ return true;
+ }
+ if (Str == "artifact")
+ {
+ OutDist = BinaryDistribution::Artifact;
+ return true;
+ }
+ return false;
+}
+
+} // namespace zen::nomad