Imported Upstream version 3.25.0
[platform/upstream/cmake.git] / Source / cmInstallCommandArguments.h
1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #pragma once
4
5 #include "cmConfigure.h" // IWYU pragma: keep
6
7 #include <string>
8 #include <vector>
9
10 #include "cmArgumentParser.h"
11 #include "cmArgumentParserTypes.h"
12
13 class cmInstallCommandArguments : public cmArgumentParser<void>
14 {
15 public:
16   cmInstallCommandArguments(std::string defaultComponent);
17   void SetGenericArguments(cmInstallCommandArguments* args)
18   {
19     this->GenericArguments = args;
20   }
21
22   // Compute destination path.and check permissions
23   bool Finalize();
24
25   const std::string& GetDestination() const;
26   const std::string& GetComponent() const;
27   const std::string& GetNamelinkComponent() const;
28   bool GetExcludeFromAll() const;
29   const std::string& GetRename() const;
30   const std::string& GetPermissions() const;
31   const std::vector<std::string>& GetConfigurations() const;
32   bool GetOptional() const;
33   bool GetNamelinkOnly() const;
34   bool GetNamelinkSkip() const;
35   bool HasNamelinkComponent() const;
36   const std::string& GetType() const;
37
38   const std::string& GetDefaultComponent() const;
39
40   static bool CheckPermissions(const std::string& onePerm, std::string& perm);
41
42 private:
43   std::string Destination;
44   std::string Component;
45   std::string NamelinkComponent;
46   bool ExcludeFromAll = false;
47   std::string Rename;
48   ArgumentParser::MaybeEmpty<std::vector<std::string>> Permissions;
49   ArgumentParser::MaybeEmpty<std::vector<std::string>> Configurations;
50   bool Optional = false;
51   bool NamelinkOnly = false;
52   bool NamelinkSkip = false;
53   std::string Type;
54
55   std::string DestinationString;
56   std::string PermissionsString;
57
58   cmInstallCommandArguments* GenericArguments = nullptr;
59   static const char* PermissionsTable[];
60   static const std::string EmptyString;
61   std::string DefaultComponentName;
62   bool CheckPermissions();
63 };
64
65 class cmInstallCommandIncludesArgument
66 {
67 public:
68   cmInstallCommandIncludesArgument();
69   void Parse(const std::vector<std::string>* args,
70              std::vector<std::string>* unconsumedArgs);
71
72   const std::vector<std::string>& GetIncludeDirs() const;
73
74 private:
75   std::vector<std::string> IncludeDirs;
76 };
77
78 class cmInstallCommandFileSetArguments : public cmInstallCommandArguments
79 {
80 public:
81   cmInstallCommandFileSetArguments(std::string defaultComponent);
82
83   void Parse(std::vector<std::string> args,
84              std::vector<std::string>* unconsumedArgs);
85
86   const std::string& GetFileSet() const { return this->FileSet; }
87
88 private:
89   std::string FileSet;
90 };