cmCTestUploadCommand.cxx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #include "cmCTestUploadCommand.h"
  4. #include "cmCTest.h"
  5. #include "cmCTestGenericHandler.h"
  6. #include "cmCTestUploadHandler.h"
  7. #include "cmMakefile.h"
  8. #include "cmSystemTools.h"
  9. #include "cmake.h"
  10. #include <sstream>
  11. cmCTestGenericHandler* cmCTestUploadCommand::InitializeHandler()
  12. {
  13. cmCTestGenericHandler* handler =
  14. this->CTest->GetInitializedHandler("upload");
  15. if (!handler) {
  16. this->SetError("internal CTest error. Cannot instantiate upload handler");
  17. return CM_NULLPTR;
  18. }
  19. static_cast<cmCTestUploadHandler*>(handler)->SetFiles(this->Files);
  20. handler->SetQuiet(this->Quiet);
  21. return handler;
  22. }
  23. bool cmCTestUploadCommand::CheckArgumentKeyword(std::string const& arg)
  24. {
  25. if (arg == "FILES") {
  26. this->ArgumentDoing = ArgumentDoingFiles;
  27. return true;
  28. }
  29. if (arg == "QUIET") {
  30. this->ArgumentDoing = ArgumentDoingNone;
  31. this->Quiet = true;
  32. return true;
  33. }
  34. if (arg == "CAPTURE_CMAKE_ERROR") {
  35. this->ArgumentDoing = ArgumentDoingCaptureCMakeError;
  36. return true;
  37. }
  38. return false;
  39. }
  40. bool cmCTestUploadCommand::CheckArgumentValue(std::string const& arg)
  41. {
  42. if (this->ArgumentDoing == ArgumentDoingCaptureCMakeError) {
  43. this->Values[ct_CAPTURE_CMAKE_ERROR] = arg.c_str();
  44. return true;
  45. }
  46. if (this->ArgumentDoing == ArgumentDoingFiles) {
  47. if (cmSystemTools::FileExists(arg.c_str())) {
  48. this->Files.insert(arg);
  49. return true;
  50. }
  51. std::ostringstream e;
  52. e << "File \"" << arg << "\" does not exist. Cannot submit "
  53. << "a non-existent file.";
  54. this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
  55. this->ArgumentDoing = ArgumentDoingError;
  56. return false;
  57. }
  58. // Look for other arguments.
  59. return this->Superclass::CheckArgumentValue(arg);
  60. }