cmInstallScriptHandler.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file LICENSE.rst or https://cmake.org/licensing for details. */
  3. #pragma once
  4. #include <cstddef>
  5. #include <functional>
  6. #include <memory>
  7. #include <string>
  8. #include <vector>
  9. #include "cmUVHandlePtr.h"
  10. #include "cmUVProcessChain.h"
  11. #include "cmUVStream.h"
  12. class cmInstrumentation;
  13. class cmInstallScriptHandler
  14. {
  15. public:
  16. cmInstallScriptHandler() = default;
  17. cmInstallScriptHandler(std::string, std::string, std::string,
  18. std::vector<std::string>&);
  19. bool IsParallel();
  20. int Install(unsigned int j, cmInstrumentation& instrumentation);
  21. struct InstallScript
  22. {
  23. std::string path;
  24. std::string config;
  25. std::vector<std::string> command;
  26. };
  27. std::vector<InstallScript> GetScripts() const;
  28. class InstallScriptRunner
  29. {
  30. public:
  31. InstallScriptRunner(InstallScript const&);
  32. void start(cm::uv_loop_ptr&, std::function<void()>);
  33. void printResult(std::size_t n, std::size_t total);
  34. private:
  35. std::vector<std::string> command;
  36. std::vector<std::string> output;
  37. std::string name;
  38. std::unique_ptr<cmUVProcessChain> chain;
  39. std::unique_ptr<cmUVStreamReadHandle> streamHandler;
  40. cm::uv_pipe_ptr pipe;
  41. };
  42. private:
  43. std::vector<InstallScript> scripts;
  44. std::vector<std::string> configs;
  45. std::vector<std::string> directories;
  46. std::string binaryDir;
  47. std::string component;
  48. bool parallel;
  49. };