5#include "../ProjectSelect/TemplateData.h"
20 static AddonManager*
Get();
23 std::string GetAddonCacheDirectory();
26 std::string GetSettingsPath();
29 std::string GetInstalledAddonsPath();
34 void AddRepository(
const std::string& url);
35 void RemoveRepository(
const std::string& url);
36 const std::vector<AddonRepository>& GetRepositories()
const {
return mRepositories; }
39 void RefreshAllRepositories();
40 void RefreshRepository(
const std::string& url);
44 bool HasRefreshedRepositories()
const {
return mRepositoriesRefreshed; }
45 const std::vector<Addon>& GetAvailableAddons()
const {
return mAvailableAddons; }
46 const std::vector<AddonCategory>& GetCategories()
const {
return mCategories; }
49 bool DownloadAddon(
const Addon& addon, std::string& outError);
52 bool InstallAddon(
const std::string& addonCachePath,
const std::string& addonId, std::string& outError,
53 const AddonInstallSource* source =
nullptr);
56 const std::vector<std::string>& GetLastInstallMissingDependencies()
const {
return mLastInstallMissingDeps; }
60 bool UninstallAddon(
const std::string& addonId);
64 bool DownloadAndInstallFromUrl(
const std::string& addonId,
65 const std::string& url,
66 const std::string& ref,
67 std::string& outError);
70 bool GetAutoResolveDependencies()
const {
return mAutoResolveDeps; }
71 void SetAutoResolveDependencies(
bool v) { mAutoResolveDeps = v; SaveSettings(); }
74 void LoadInstalledAddons();
75 void SaveInstalledAddons();
76 const std::vector<InstalledAddon>& GetInstalledAddons()
const {
return mInstalledAddons; }
77 std::vector<InstalledAddon>& GetInstalledAddonsMutable() {
return mInstalledAddons; }
78 bool IsAddonInstalled(
const std::string& addonId)
const;
79 const InstalledAddon* FindInstalled(
const std::string& addonId)
const;
81 bool HasUpdate(
const std::string& addonId)
const;
84 AddonUpdateStatus GetUpdateStatus(
const std::string& addonId)
const;
85 std::string GetInstalledVersion(
const std::string& addonId)
const;
93 bool FetchLatestCommit(
const std::string& repoUrl,
const std::string& branch,
94 const std::string& subPath, std::string& outSha,
95 std::string& outDate, std::string& outError);
99 int CheckForUpdates(std::string& outSummary);
101 static std::string GetAddonBranch(
const Addon& addon);
102 bool SetInstalledAddonNativeMode(
const std::string& addonId, NativeAddonResolveMode mode);
103 bool SyncNativeAddonBinary(
const std::string& addonId, std::string& outError);
106 const Addon* FindAddon(
const std::string& addonId)
const;
109 static AddonManager* sInstance;
114 void EnsureCacheDirectory();
124 bool FetchManifest(
const std::string& url,
const std::string& branch,
bool& outFound);
126 bool FetchRepositoryManifest(
const std::string& url, AddonRepository& outRepo,
const std::string& branch);
128 bool FetchAddonMetadata(
const std::string& repoUrl,
const std::string& addonId, Addon& outAddon,
const std::string& branch);
131 bool MergeAddonIntoProject(
const std::string& addonPath, std::string& outError);
134 bool DownloadFile(
const std::string& url,
const std::string& destPath, std::string& outError);
137 bool ExtractZip(
const std::string& zipPath,
const std::string& destDir, std::string& outError);
139 std::string NormalizePath(
const std::string& in);
142 std::string ConvertToRawUrl(
const std::string& gitHubUrl,
const std::string& filePath,
const std::string& branch);
145 std::string ConvertToDownloadUrl(
const std::string& gitHubUrl,
const std::string& branch);
148 std::string GetCurrentTimestamp();
151 static bool ParseGitHubRepo(
const std::string& url, std::string& outOwner, std::string& outRepo);
153 std::vector<AddonRepository> mRepositories;
154 std::vector<Addon> mAvailableAddons;
155 std::vector<AddonCategory> mCategories;
156 std::vector<InstalledAddon> mInstalledAddons;
157 bool mAutoResolveDeps =
true;
158 bool mRepositoriesRefreshed =
false;
159 std::vector<std::string> mLastInstallMissingDeps;