// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "../zen.h" #include #include namespace zen { class UpCommand : public ZenCmdBase { public: static constexpr char Name[] = "up"; static constexpr char Description[] = "Bring zen server up"; UpCommand(); ~UpCommand(); virtual void Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) override; virtual cxxopts::Options& Options() override { return m_Options; } private: cxxopts::Options m_Options{Name, Description}; uint16_t m_Port = 0; bool m_ShowConsole = false; bool m_ShowLog = false; std::filesystem::path m_ProgramBaseDir; }; class AttachCommand : public ZenCmdBase { public: static constexpr char Name[] = "attach"; static constexpr char Description[] = "Add a sponsor process to a running zen service"; AttachCommand(); ~AttachCommand(); virtual void Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) override; virtual cxxopts::Options& Options() override { return m_Options; } private: cxxopts::Options m_Options{Name, Description}; uint16_t m_Port = 0; int m_OwnerPid = 0; std::filesystem::path m_DataDir; }; class DownCommand : public ZenCmdBase { public: static constexpr char Name[] = "down"; static constexpr char Description[] = "Bring zen server down"; DownCommand(); ~DownCommand(); virtual void Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) override; virtual cxxopts::Options& Options() override { return m_Options; } private: cxxopts::Options m_Options{Name, Description}; uint16_t m_Port = 0; uint32_t m_Pid = 0; bool m_All = false; bool m_ForceTerminate = false; std::filesystem::path m_ProgramBaseDir; std::filesystem::path m_DataDir; std::filesystem::path m_ExecutablePath; }; } // namespace zen