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);
41 const std::vector<Addon>& GetAvailableAddons()
const {
return mAvailableAddons; }
42 const std::vector<AddonCategory>& GetCategories()
const {
return mCategories; }
45 bool DownloadAddon(
const Addon& addon, std::string& outError);
46 bool InstallAddon(
const std::string& addonCachePath,
const std::string& addonId, std::string& outError);
47 bool UninstallAddon(
const std::string& addonId);
51 bool DownloadAndInstallFromUrl(
const std::string& addonId,
52 const std::string& url,
53 const std::string& ref,
54 std::string& outError);
57 bool GetAutoResolveDependencies()
const {
return mAutoResolveDeps; }
58 void SetAutoResolveDependencies(
bool v) { mAutoResolveDeps = v; SaveSettings(); }
61 void LoadInstalledAddons();
62 void SaveInstalledAddons();
63 const std::vector<InstalledAddon>& GetInstalledAddons()
const {
return mInstalledAddons; }
64 std::vector<InstalledAddon>& GetInstalledAddonsMutable() {
return mInstalledAddons; }
65 bool IsAddonInstalled(
const std::string& addonId)
const;
66 bool HasUpdate(
const std::string& addonId)
const;
67 std::string GetInstalledVersion(
const std::string& addonId)
const;
68 bool SetInstalledAddonNativeMode(
const std::string& addonId, NativeAddonResolveMode mode);
69 bool SyncNativeAddonBinary(
const std::string& addonId, std::string& outError);
72 const Addon* FindAddon(
const std::string& addonId)
const;
75 static AddonManager* sInstance;
80 void EnsureCacheDirectory();
90 bool FetchManifest(
const std::string& url,
const std::string& branch,
bool& outFound);
92 bool FetchRepositoryManifest(
const std::string& url, AddonRepository& outRepo,
const std::string& branch);
94 bool FetchAddonMetadata(
const std::string& repoUrl,
const std::string& addonId, Addon& outAddon,
const std::string& branch);
97 bool MergeAddonIntoProject(
const std::string& addonPath, std::string& outError);
100 bool DownloadFile(
const std::string& url,
const std::string& destPath, std::string& outError);
103 bool ExtractZip(
const std::string& zipPath,
const std::string& destDir, std::string& outError);
105 std::string NormalizePath(
const std::string& in);
108 std::string ConvertToRawUrl(
const std::string& gitHubUrl,
const std::string& filePath,
const std::string& branch);
111 std::string ConvertToDownloadUrl(
const std::string& gitHubUrl,
const std::string& branch);
114 std::string GetCurrentTimestamp();
116 std::vector<AddonRepository> mRepositories;
117 std::vector<Addon> mAvailableAddons;
118 std::vector<AddonCategory> mCategories;
119 std::vector<InstalledAddon> mInstalledAddons;
120 bool mAutoResolveDeps =
true;