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; }
44 bool DownloadAddon(
const Addon& addon, std::string& outError);
45 bool InstallAddon(
const std::string& addonCachePath,
const std::string& addonId, std::string& outError);
46 bool UninstallAddon(
const std::string& addonId);
49 void LoadInstalledAddons();
50 void SaveInstalledAddons();
51 const std::vector<InstalledAddon>& GetInstalledAddons()
const {
return mInstalledAddons; }
52 std::vector<InstalledAddon>& GetInstalledAddonsMutable() {
return mInstalledAddons; }
53 bool IsAddonInstalled(
const std::string& addonId)
const;
54 bool HasUpdate(
const std::string& addonId)
const;
55 std::string GetInstalledVersion(
const std::string& addonId)
const;
56 bool SetInstalledAddonNativeMode(
const std::string& addonId, NativeAddonResolveMode mode);
57 bool SyncNativeAddonBinary(
const std::string& addonId, std::string& outError);
60 const Addon* FindAddon(
const std::string& addonId)
const;
63 static AddonManager* sInstance;
68 void EnsureCacheDirectory();
69 bool FetchRepositoryManifest(
const std::string& url, AddonRepository& outRepo,
const std::string& branch);
71 bool FetchAddonMetadata(
const std::string& repoUrl,
const std::string& addonId, Addon& outAddon,
const std::string& branch);
74 bool MergeAddonIntoProject(
const std::string& addonPath, std::string& outError);
77 bool DownloadFile(
const std::string& url,
const std::string& destPath, std::string& outError);
80 bool ExtractZip(
const std::string& zipPath,
const std::string& destDir, std::string& outError);
82 std::string NormalizePath(
const std::string& in);
85 std::string ConvertToRawUrl(
const std::string& gitHubUrl,
const std::string& filePath,
const std::string& branch);
88 std::string ConvertToDownloadUrl(
const std::string& gitHubUrl,
const std::string& branch);
91 std::string GetCurrentTimestamp();
93 std::vector<AddonRepository> mRepositories;
94 std::vector<Addon> mAvailableAddons;
95 std::vector<InstalledAddon> mInstalledAddons;