diff options
Diffstat (limited to 'Source/CTest/cmCTestUploadCommand.cxx')
-rw-r--r-- | Source/CTest/cmCTestUploadCommand.cxx | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestUploadCommand.cxx b/Source/CTest/cmCTestUploadCommand.cxx new file mode 100644 index 0000000..2fe2cd3 --- /dev/null +++ b/Source/CTest/cmCTestUploadCommand.cxx @@ -0,0 +1,68 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#include "cmCTestUploadCommand.h" + +#include <sstream> +#include <vector> + +#include "cmCTest.h" +#include "cmCTestGenericHandler.h" +#include "cmCTestUploadHandler.h" +#include "cmMakefile.h" +#include "cmMessageType.h" +#include "cmSystemTools.h" + +cmCTestGenericHandler* cmCTestUploadCommand::InitializeHandler() +{ + cmCTestGenericHandler* handler = + this->CTest->GetInitializedHandler("upload"); + if (!handler) { + this->SetError("internal CTest error. Cannot instantiate upload handler"); + return nullptr; + } + static_cast<cmCTestUploadHandler*>(handler)->SetFiles(this->Files); + + handler->SetQuiet(this->Quiet); + return handler; +} + +bool cmCTestUploadCommand::CheckArgumentKeyword(std::string const& arg) +{ + if (arg == "FILES") { + this->ArgumentDoing = ArgumentDoingFiles; + return true; + } + if (arg == "QUIET") { + this->ArgumentDoing = ArgumentDoingNone; + this->Quiet = true; + return true; + } + if (arg == "CAPTURE_CMAKE_ERROR") { + this->ArgumentDoing = ArgumentDoingCaptureCMakeError; + return true; + } + return false; +} + +bool cmCTestUploadCommand::CheckArgumentValue(std::string const& arg) +{ + if (this->ArgumentDoing == ArgumentDoingCaptureCMakeError) { + this->Values[ct_CAPTURE_CMAKE_ERROR] = arg.c_str(); + return true; + } + if (this->ArgumentDoing == ArgumentDoingFiles) { + if (cmSystemTools::FileExists(arg)) { + this->Files.insert(arg); + return true; + } + std::ostringstream e; + e << "File \"" << arg << "\" does not exist. Cannot submit " + << "a non-existent file."; + this->Makefile->IssueMessage(MessageType::FATAL_ERROR, e.str()); + this->ArgumentDoing = ArgumentDoingError; + return false; + } + + // Look for other arguments. + return this->Superclass::CheckArgumentValue(arg); +} |