Files
CMake/Source/CTest/cmCTestSubmitCommand.h
T
Daniel Pfeifer 4ffc408ed9 cmCTest*Command: Loosen coupling with cmArgumentParser
Instead of inheriting from `cmArgumentParser<void>` and binding arguments by
overriding `BindArguments`, define a struct for the arguments and instantiate
a static const parser in the `InitialPass` function of each command.  Pass the
argument struct down to all functions that need to access it.
2024-11-05 10:08:23 +01:00

59 lines
1.6 KiB
C++

/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
#pragma once
#include "cmConfigure.h" // IWYU pragma: keep
#include <memory>
#include <string>
#include <vector>
#include <cm/optional>
#include "cmArgumentParserTypes.h"
#include "cmCTestHandlerCommand.h"
class cmExecutionStatus;
class cmCTestGenericHandler;
class cmCommand;
class cmCTestSubmitCommand : public cmCTestHandlerCommand
{
public:
using cmCTestHandlerCommand::cmCTestHandlerCommand;
protected:
struct SubmitArguments : HandlerArguments
{
bool CDashUpload = false;
bool InternalTest = false;
std::string BuildID;
std::string CDashUploadFile;
std::string CDashUploadType;
std::string RetryCount;
std::string RetryDelay;
std::string SubmitURL;
cm::optional<ArgumentParser::MaybeEmpty<std::vector<std::string>>> Files;
ArgumentParser::MaybeEmpty<std::vector<std::string>> HttpHeaders;
cm::optional<ArgumentParser::MaybeEmpty<std::vector<std::string>>> Parts;
};
private:
std::unique_ptr<cmCommand> Clone() override;
std::string GetName() const override { return "ctest_submit"; }
void CheckArguments(HandlerArguments& arguments) override;
std::unique_ptr<cmCTestGenericHandler> InitializeHandler(
HandlerArguments& arguments) override;
void ProcessAdditionalValues(cmCTestGenericHandler* handler,
HandlerArguments const& arguments) override;
bool InitialPass(std::vector<std::string> const& args,
cmExecutionStatus& status) override;
};