79bd945c7a3367d22749d0dd184d5b6423527af5
[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
12 class cmInstallCommandArguments : public cmArgumentParser<void>
13 {
14 public:
15   cmInstallCommandArguments(std::string defaultComponent);
16   void SetGenericArguments(cmInstallCommandArguments* args)
17   {
18     this->GenericArguments = args;
19   }
20
21   // Compute destination path.and check permissions
22   bool Finalize();
23
24   const std::string& GetDestination() const;
25   const std::string& GetComponent() const;
26   const std::string& GetNamelinkComponent() const;
27   bool GetExcludeFromAll() const;
28   const std::string& GetRename() const;
29   const std::string& GetPermissions() const;
30   const std::vector<std::string>& GetConfigurations() const;
31   bool GetOptional() const;
32   bool GetNamelinkOnly() const;
33   bool GetNamelinkSkip() const;
34   bool HasNamelinkComponent() const;
35   const std::string& GetType() const;
36
37   const std::string& GetDefaultComponent() const;
38
39   static bool CheckPermissions(const std::string& onePerm, std::string& perm);
40
41 private:
42   std::string Destination;
43   std::string Component;
44   std::string NamelinkComponent;
45   bool ExcludeFromAll = false;
46   std::string Rename;
47   std::vector<std::string> Permissions;
48   std::vector<std::string> Configurations;
49   bool Optional = false;
50   bool NamelinkOnly = false;
51   bool NamelinkSkip = false;
52   std::string Type;
53
54   std::string DestinationString;
55   std::string PermissionsString;
56
57   cmInstallCommandArguments* GenericArguments = nullptr;
58   static const char* PermissionsTable[];
59   static const std::string EmptyString;
60   std::string DefaultComponentName;
61   bool CheckPermissions();
62 };
63
64 class cmInstallCommandIncludesArgument
65 {
66 public:
67   cmInstallCommandIncludesArgument();
68   void Parse(const std::vector<std::string>* args,
69              std::vector<std::string>* unconsumedArgs);
70
71   const std::vector<std::string>& GetIncludeDirs() const;
72
73 private:
74   std::vector<std::string> IncludeDirs;
75 };
76
77 class cmInstallCommandFileSetArguments : public cmInstallCommandArguments
78 {
79 public:
80   cmInstallCommandFileSetArguments(std::string defaultComponent);
81
82   void Parse(std::vector<std::string> args,
83              std::vector<std::string>* unconsumedArgs);
84
85   const std::string& GetFileSet() const { return this->FileSet; }
86
87 private:
88   std::string FileSet;
89 };