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);
50 bool DownloadAndInstallFromUrl(
const std::string& addonId,
51 const std::string& url,
52 const std::string& ref,
53 std::string& outError);
56 bool GetAutoResolveDependencies()
const {
return mAutoResolveDeps; }
57 void SetAutoResolveDependencies(
bool v) { mAutoResolveDeps = v; SaveSettings(); }
60 void LoadInstalledAddons();
61 void SaveInstalledAddons();
62 const std::vector<InstalledAddon>& GetInstalledAddons()
const {
return mInstalledAddons; }
63 std::vector<InstalledAddon>& GetInstalledAddonsMutable() {
return mInstalledAddons; }
64 bool IsAddonInstalled(
const std::string& addonId)
const;
65 bool HasUpdate(
const std::string& addonId)
const;
66 std::string GetInstalledVersion(
const std::string& addonId)
const;
67 bool SetInstalledAddonNativeMode(
const std::string& addonId, NativeAddonResolveMode mode);
68 bool SyncNativeAddonBinary(
const std::string& addonId, std::string& outError);
71 const Addon* FindAddon(
const std::string& addonId)
const;
74 static AddonManager* sInstance;
79 void EnsureCacheDirectory();
80 bool FetchRepositoryManifest(
const std::string& url, AddonRepository& outRepo,
const std::string& branch);
82 bool FetchAddonMetadata(
const std::string& repoUrl,
const std::string& addonId, Addon& outAddon,
const std::string& branch);
85 bool MergeAddonIntoProject(
const std::string& addonPath, std::string& outError);
88 bool DownloadFile(
const std::string& url,
const std::string& destPath, std::string& outError);
91 bool ExtractZip(
const std::string& zipPath,
const std::string& destDir, std::string& outError);
93 std::string NormalizePath(
const std::string& in);
96 std::string ConvertToRawUrl(
const std::string& gitHubUrl,
const std::string& filePath,
const std::string& branch);
99 std::string ConvertToDownloadUrl(
const std::string& gitHubUrl,
const std::string& branch);
102 std::string GetCurrentTimestamp();
104 std::vector<AddonRepository> mRepositories;
105 std::vector<Addon> mAvailableAddons;
106 std::vector<InstalledAddon> mInstalledAddons;
107 bool mAutoResolveDeps =
true;