diff options
Diffstat (limited to 'Source/CPack/IFW/cmCPackIFWPackage.h')
-rw-r--r-- | Source/CPack/IFW/cmCPackIFWPackage.h | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/Source/CPack/IFW/cmCPackIFWPackage.h b/Source/CPack/IFW/cmCPackIFWPackage.h new file mode 100644 index 0000000..ae41146 --- /dev/null +++ b/Source/CPack/IFW/cmCPackIFWPackage.h @@ -0,0 +1,153 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmCPackIFWPackage_h +#define cmCPackIFWPackage_h + +#include "cmConfigure.h" // IWYU pragma: keep + +#include "cmCPackIFWCommon.h" + +#include <map> +#include <set> +#include <string> +#include <vector> + +class cmCPackComponent; +class cmCPackComponentGroup; +class cmCPackIFWInstaller; + +/** \class cmCPackIFWPackage + * \brief A single component to be installed by CPack IFW generator + */ +class cmCPackIFWPackage : public cmCPackIFWCommon +{ +public: + // Types + + enum CompareTypes + { + CompareNone = 0x0, + CompareEqual = 0x1, + CompareLess = 0x2, + CompareLessOrEqual = 0x3, + CompareGreater = 0x4, + CompareGreaterOrEqual = 0x5 + }; + + struct CompareStruct + { + CompareStruct(); + + unsigned int Type; + std::string Value; + }; + + struct DependenceStruct + { + DependenceStruct(); + DependenceStruct(const std::string& dependence); + + std::string Name; + CompareStruct Compare; + + std::string NameWithCompare() const; + + bool operator<(const DependenceStruct& other) const + { + return Name < other.Name; + } + }; + +public: + // [Con|De]structor + + /** + * Construct package + */ + cmCPackIFWPackage(); + +public: + // Configuration + + /// Human-readable name of the component + std::map<std::string, std::string> DisplayName; + + /// Human-readable description of the component + std::map<std::string, std::string> Description; + + /// Version number of the component + std::string Version; + + /// Date when this component version was released + std::string ReleaseDate; + + /// Domain-like identification for this component + std::string Name; + + /// File name of a script being loaded + std::string Script; + + /// List of license agreements to be accepted by the installing user + std::vector<std::string> Licenses; + + /// List of pages to load + std::vector<std::string> UserInterfaces; + + /// List of translation files to load + std::vector<std::string> Translations; + + /// Priority of the component in the tree + std::string SortingPriority; + + /// Description added to the component description + std::string UpdateText; + + /// Set to true to preselect the component in the installer + std::string Default; + + /// Marks the package as essential to force a restart of the MaintenanceTool + std::string Essential; + + /// Set to true to hide the component from the installer + std::string Virtual; + + /// Determines that the package must always be installed + std::string ForcedInstallation; + + /// List of components to replace + std::vector<std::string> Replaces; + + /// Package needs to be installed with elevated permissions + std::string RequiresAdminRights; + + /// Set to false if you want to hide the checkbox for an item + std::string Checkable; + +public: + // Internal implementation + + std::string GetComponentName(cmCPackComponent* component); + + void DefaultConfiguration(); + + int ConfigureFromOptions(); + int ConfigureFromComponent(cmCPackComponent* component); + int ConfigureFromGroup(cmCPackComponentGroup* group); + int ConfigureFromGroup(const std::string& groupName); + int ConfigureFromPrefix(const std::string& prefix); + + void GeneratePackageFile(); + + // Pointer to installer + cmCPackIFWInstaller* Installer; + // Collection of dependencies + std::set<cmCPackIFWPackage*> Dependencies; + // Collection of unresolved dependencies + std::set<DependenceStruct*> AlienDependencies; + // Collection of unresolved automatic dependency on + std::set<DependenceStruct*> AlienAutoDependOn; + // Patch to package directory + std::string Directory; +}; + +#endif // cmCPackIFWPackage_h |