summaryrefslogtreecommitdiffstats
path: root/Source/cmInstallCommandArguments.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmInstallCommandArguments.h')
-rw-r--r--Source/cmInstallCommandArguments.h90
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;
+};