// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "../zen.h" #include #include namespace zen { class HubUpSubCmd : public ZenSubCmdBase { public: HubUpSubCmd(); void Run(const ZenCliOptions& GlobalOptions) override; private: uint16_t m_Port = 0; bool m_ShowConsole = false; bool m_ShowLog = false; std::filesystem::path m_ProgramBaseDir; }; class HubDownSubCmd : public ZenSubCmdBase { public: HubDownSubCmd(); void Run(const ZenCliOptions& GlobalOptions) override; private: uint16_t m_Port = 0; bool m_All = false; bool m_ForceTerminate = false; std::filesystem::path m_ProgramBaseDir; std::filesystem::path m_DataDir; }; class HubProvisionSubCmd : public ZenSubCmdBase { public: HubProvisionSubCmd(); void Run(const ZenCliOptions& GlobalOptions) override; private: std::string m_HostName; std::string m_ModuleId; }; class HubDeprovisionSubCmd : public ZenSubCmdBase { public: HubDeprovisionSubCmd(); void Run(const ZenCliOptions& GlobalOptions) override; private: std::string m_HostName; std::string m_ModuleId; }; class HubHibernateSubCmd : public ZenSubCmdBase { public: HubHibernateSubCmd(); void Run(const ZenCliOptions& GlobalOptions) override; private: std::string m_HostName; std::string m_ModuleId; }; class HubWakeSubCmd : public ZenSubCmdBase { public: HubWakeSubCmd(); void Run(const ZenCliOptions& GlobalOptions) override; private: std::string m_HostName; std::string m_ModuleId; }; class HubStatusSubCmd : public ZenSubCmdBase { public: HubStatusSubCmd(); void Run(const ZenCliOptions& GlobalOptions) override; private: std::string m_HostName; std::string m_ModuleId; }; class HubCommand : public ZenCmdWithSubCommands { public: static constexpr char Name[] = "hub"; static constexpr char Description[] = "Manage zen hub server and its module instances"; HubCommand(); ~HubCommand(); cxxopts::Options& Options() override { return m_Options; } ZenCmdCategory& CommandCategory() const override { return g_UtilitiesCategory; } private: cxxopts::Options m_Options{Name, Description}; std::string m_SubCommand; HubUpSubCmd m_UpSubCmd; HubDownSubCmd m_DownSubCmd; HubProvisionSubCmd m_ProvisionSubCmd; HubDeprovisionSubCmd m_DeprovisionSubCmd; HubHibernateSubCmd m_HibernateSubCmd; HubWakeSubCmd m_WakeSubCmd; HubStatusSubCmd m_StatusSubCmd; }; } // namespace zen