cmInstallScriptHandler.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt 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 cmInstallScriptHandler
  13. {
  14. public:
  15. cmInstallScriptHandler() = default;
  16. cmInstallScriptHandler(std::string, std::string, std::string,
  17. std::vector<std::string>&);
  18. bool IsParallel();
  19. int Install(unsigned int j);
  20. std::vector<std::vector<std::string>> GetCommands() const;
  21. class InstallScript
  22. {
  23. public:
  24. InstallScript(const std::vector<std::string>&);
  25. void start(cm::uv_loop_ptr&, std::function<void()>);
  26. void printResult(std::size_t n, std::size_t total);
  27. private:
  28. std::vector<std::string> command;
  29. std::vector<std::string> output;
  30. std::string name;
  31. std::unique_ptr<cmUVProcessChain> chain;
  32. std::unique_ptr<cmUVStreamReadHandle> streamHandler;
  33. cm::uv_pipe_ptr pipe;
  34. };
  35. private:
  36. std::vector<std::vector<std::string>> commands;
  37. std::vector<std::string> directories;
  38. std::vector<std::string> configs;
  39. std::string binaryDir;
  40. std::string component;
  41. bool parallel;
  42. };