diff options
Diffstat (limited to 'Source/cmInstallCommandArguments.h')
-rw-r--r-- | Source/cmInstallCommandArguments.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/Source/cmInstallCommandArguments.h b/Source/cmInstallCommandArguments.h new file mode 100644 index 0000000..6e46aac --- /dev/null +++ b/Source/cmInstallCommandArguments.h @@ -0,0 +1,90 @@ +/* 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 <string> +#include <vector> + +#include "cmArgumentParser.h" +#include "cmArgumentParserTypes.h" + +class cmInstallCommandArguments : public cmArgumentParser<void> +{ +public: + cmInstallCommandArguments(std::string defaultComponent); + void SetGenericArguments(cmInstallCommandArguments* args) + { + this->GenericArguments = args; + } + + // Compute destination path.and check permissions + bool Finalize(); + + const std::string& GetDestination() const; + const std::string& GetComponent() const; + const std::string& GetNamelinkComponent() const; + bool GetExcludeFromAll() const; + const std::string& GetRename() const; + const std::string& GetPermissions() const; + const std::vector<std::string>& GetConfigurations() const; + bool GetOptional() const; + bool GetNamelinkOnly() const; + bool GetNamelinkSkip() const; + bool HasNamelinkComponent() const; + const std::string& GetType() const; + + const std::string& GetDefaultComponent() const; + + static bool CheckPermissions(const std::string& onePerm, std::string& perm); + +private: + std::string Destination; + std::string Component; + std::string NamelinkComponent; + bool ExcludeFromAll = false; + std::string Rename; + ArgumentParser::MaybeEmpty<std::vector<std::string>> Permissions; + ArgumentParser::MaybeEmpty<std::vector<std::string>> Configurations; + bool Optional = false; + bool NamelinkOnly = false; + bool NamelinkSkip = false; + std::string Type; + + std::string DestinationString; + std::string PermissionsString; + + cmInstallCommandArguments* GenericArguments = nullptr; + static const char* PermissionsTable[]; + static const std::string EmptyString; + std::string DefaultComponentName; + bool CheckPermissions(); +}; + +class cmInstallCommandIncludesArgument +{ +public: + cmInstallCommandIncludesArgument(); + void Parse(const std::vector<std::string>* args, + std::vector<std::string>* unconsumedArgs); + + const std::vector<std::string>& GetIncludeDirs() const; + +private: + std::vector<std::string> IncludeDirs; +}; + +class cmInstallCommandFileSetArguments : public cmInstallCommandArguments +{ +public: + cmInstallCommandFileSetArguments(std::string defaultComponent); + + void Parse(std::vector<std::string> args, + std::vector<std::string>* unconsumedArgs); + + const std::string& GetFileSet() const { return this->FileSet; } + +private: + std::string FileSet; +}; |