/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include #include #include #include #include #include "cmUVProcessChain.h" #include "cmUVStream.h" namespace cm { class uv_loop_ptr; } class cmInstrumentation; class cmInstallScriptHandler { public: cmInstallScriptHandler() = default; cmInstallScriptHandler(std::string, std::vector, std::string, std::vector&); bool IsParallel(); int Install(unsigned int j, cmInstrumentation& instrumentation); struct InstallScript { std::string path; std::string config; std::vector command; }; std::vector GetScripts() const; class InstallScriptRunner { public: InstallScriptRunner(InstallScript const&); void start(cm::uv_loop_ptr&, std::function); void printResult(std::size_t n, std::size_t total); private: std::vector Command; std::vector Output; std::string Name; std::unique_ptr Chain; std::unique_ptr StreamHandler; }; private: std::vector Scripts; std::vector Configs; std::vector Directories; std::vector Components; std::string BinaryDir; bool Parallel; };