7#include <unordered_map>
13enum class NativeAddonTarget
19enum class NativeAddonResolveMode
25struct NativeBinaryDescriptor
27 std::string mPlatform;
32 std::string mChecksumSha256;
33 std::string mEntryPath;
39struct NativeModuleMetadata
41 bool mHasNative =
false;
42 NativeAddonTarget mTarget = NativeAddonTarget::EngineAndEditor;
43 std::string mSourceDir =
"Source";
44 std::string mBinaryName;
45 std::string mEntrySymbol =
"PolyphasePlugin_GetDesc";
46 std::string mExportDefine;
47 uint32_t mPluginApiVersion = 1;
48 std::vector<std::string> mDependencies;
49 NativeAddonResolveMode mResolveMode = NativeAddonResolveMode::Source;
50 std::vector<NativeBinaryDescriptor> mBinaries;
56 std::vector<std::string> mExtraDefines;
57 std::vector<std::string> mExtraIncludeDirs;
58 std::vector<std::string> mExtraLibDirs;
59 std::vector<std::string> mExtraLibs;
60 std::vector<std::string> mCopyBinaries;
70 std::vector<std::string> mExtraDefines;
71 std::vector<std::string> mExtraIncludeDirs;
72 std::vector<std::string> mExtraLibDirs;
73 std::vector<std::string> mExtraLibs;
74 std::vector<std::string> mCopyBinaries;
76 std::unordered_map<std::string, PlatformExtras> mPerPlatform;
81 PlatformExtras ResolveExtras(
const std::string& platformName)
const
84 out.mExtraDefines = mExtraDefines;
85 out.mExtraIncludeDirs = mExtraIncludeDirs;
86 out.mExtraLibDirs = mExtraLibDirs;
87 out.mExtraLibs = mExtraLibs;
88 out.mCopyBinaries = mCopyBinaries;
90 if (!platformName.empty())
92 auto it = mPerPlatform.find(platformName);
93 if (it != mPerPlatform.end())
95 const PlatformExtras& over = it->second;
96 out.mExtraDefines.insert (out.mExtraDefines.end(), over.mExtraDefines.begin(), over.mExtraDefines.end());
97 out.mExtraIncludeDirs.insert(out.mExtraIncludeDirs.end(), over.mExtraIncludeDirs.begin(), over.mExtraIncludeDirs.end());
98 out.mExtraLibDirs.insert (out.mExtraLibDirs.end(), over.mExtraLibDirs.begin(), over.mExtraLibDirs.end());
99 out.mExtraLibs.insert (out.mExtraLibs.end(), over.mExtraLibs.begin(), over.mExtraLibs.end());
100 out.mCopyBinaries.insert (out.mCopyBinaries.end(), over.mCopyBinaries.begin(), over.mCopyBinaries.end());
110struct ContentMetadata
115 std::string mDescription;
117 std::string mVersion;
118 std::string mUpdated;
119 std::vector<std::string> mTags;
128 ContentMetadata mMetadata;
130 bool mHasThumbnail =
false;
138 ContentMetadata mMetadata;
139 std::string mRepoUrl;
140 bool mHasThumbnail =
false;
141 bool mIsInstalled =
false;
143 bool mIsStandalone =
false;
144 std::string mInstalledVersion;
145 NativeModuleMetadata mNative;
151struct AddonRepository
155 std::vector<std::string> mAddonIds;
164 std::string mVersion;
165 std::string mInstalledDate;
166 std::string mRepoUrl;
167 bool mEnabled =
true;
168 bool mEnableNative =
true;
169 NativeAddonResolveMode mNativeMode = NativeAddonResolveMode::Source;
170 std::string mLastSyncAt;
171 std::string mLastSyncSource;
172 std::string mLastSyncStatus;