mirror of
https://github.com/geode-sdk/geode.git
synced 2024-11-27 09:55:34 -05:00
download latest loader resource if folder doesnt exist and the version doesnt exist
This commit is contained in:
parent
4b9b72f541
commit
28480a6dc4
1 changed files with 59 additions and 60 deletions
|
@ -740,14 +740,12 @@ void Loader::Impl::tryDownloadLoaderResources(
|
||||||
.expect([this, tryLatestOnError](std::string const& info, int code) {
|
.expect([this, tryLatestOnError](std::string const& info, int code) {
|
||||||
// if the url was not found, try downloading latest release instead
|
// if the url was not found, try downloading latest release instead
|
||||||
// (for development versions)
|
// (for development versions)
|
||||||
if (code == 404 && tryLatestOnError) {
|
if (code == 404) {
|
||||||
this->downloadLoaderResources(true);
|
log::warn("Unable to download resources: {}", info);
|
||||||
}
|
|
||||||
else {
|
|
||||||
ResourceDownloadEvent(
|
|
||||||
UpdateFailed("Unable to download resources: " + info)
|
|
||||||
).post();
|
|
||||||
}
|
}
|
||||||
|
ResourceDownloadEvent(
|
||||||
|
UpdateFailed("Unable to download resources: " + info)
|
||||||
|
).post();
|
||||||
})
|
})
|
||||||
.progress([](auto&, double now, double total) {
|
.progress([](auto&, double now, double total) {
|
||||||
ResourceDownloadEvent(
|
ResourceDownloadEvent(
|
||||||
|
@ -768,65 +766,66 @@ void Loader::Impl::updateSpecialFiles() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Loader::Impl::downloadLoaderResources(bool useLatestRelease) {
|
void Loader::Impl::downloadLoaderResources(bool useLatestRelease) {
|
||||||
if (!useLatestRelease) {
|
web::AsyncWebRequest()
|
||||||
web::AsyncWebRequest()
|
.join("loader-tag-exists-check")
|
||||||
.join("loader-tag-exists-check")
|
.userAgent("github_api/1.0")
|
||||||
.userAgent("github_api/1.0")
|
.fetch(fmt::format(
|
||||||
.fetch(fmt::format(
|
"https://api.github.com/repos/geode-sdk/geode/git/ref/tags/{}",
|
||||||
"https://api.github.com/repos/geode-sdk/geode/git/ref/tags/{}",
|
this->getVersion().toString()
|
||||||
|
))
|
||||||
|
.json()
|
||||||
|
.then([this](json::Value const& json) {
|
||||||
|
this->tryDownloadLoaderResources(fmt::format(
|
||||||
|
"https://github.com/geode-sdk/geode/releases/download/{}/resources.zip",
|
||||||
this->getVersion().toString()
|
this->getVersion().toString()
|
||||||
))
|
), true);
|
||||||
.json()
|
})
|
||||||
.then([this](json::Value const& json) {
|
.expect([=](std::string const& info, int code) {
|
||||||
this->tryDownloadLoaderResources(fmt::format(
|
if (code == 404) {
|
||||||
"https://github.com/geode-sdk/geode/releases/download/{}/resources.zip",
|
if (useLatestRelease) {
|
||||||
this->getVersion().toString()
|
log::debug("Loader version {} does not exist on Github, downloading latest resources", this->getVersion().toString());
|
||||||
), true);
|
fetchLatestGithubRelease(
|
||||||
})
|
[this](json::Value const& raw) {
|
||||||
.expect([this](std::string const& info, int code) {
|
auto json = raw;
|
||||||
if (code == 404) {
|
JsonChecker checker(json);
|
||||||
log::debug("Loader version {} does not exist on Github, not downloading the resources", this->getVersion().toString());
|
auto root = checker.root("[]").obj();
|
||||||
ResourceDownloadEvent(
|
|
||||||
UpdateFinished()
|
// find release asset
|
||||||
).post();
|
for (auto asset : root.needs("assets").iterate()) {
|
||||||
|
auto obj = asset.obj();
|
||||||
|
if (obj.needs("name").template get<std::string>() == "resources.zip") {
|
||||||
|
this->tryDownloadLoaderResources(
|
||||||
|
obj.needs("browser_download_url").template get<std::string>(),
|
||||||
|
false
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ResourceDownloadEvent(
|
||||||
|
UpdateFailed("Unable to find resources in latest GitHub release")
|
||||||
|
).post();
|
||||||
|
},
|
||||||
|
[this](std::string const& info) {
|
||||||
|
ResourceDownloadEvent(
|
||||||
|
UpdateFailed("Unable to download resources: " + info)
|
||||||
|
).post();
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ResourceDownloadEvent(
|
log::debug("Loader version {} does not exist on Github, not downloading the resources", this->getVersion().toString());
|
||||||
UpdateFailed("Unable to check if tag exists: " + info)
|
|
||||||
).post();
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
fetchLatestGithubRelease(
|
|
||||||
[this](json::Value const& raw) {
|
|
||||||
auto json = raw;
|
|
||||||
JsonChecker checker(json);
|
|
||||||
auto root = checker.root("[]").obj();
|
|
||||||
|
|
||||||
// find release asset
|
|
||||||
for (auto asset : root.needs("assets").iterate()) {
|
|
||||||
auto obj = asset.obj();
|
|
||||||
if (obj.needs("name").template get<std::string>() == "resources.zip") {
|
|
||||||
this->tryDownloadLoaderResources(
|
|
||||||
obj.needs("browser_download_url").template get<std::string>(),
|
|
||||||
false
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ResourceDownloadEvent(
|
ResourceDownloadEvent(
|
||||||
UpdateFailed("Unable to find resources in latest GitHub release")
|
UpdateFinished()
|
||||||
).post();
|
|
||||||
},
|
|
||||||
[this](std::string const& info) {
|
|
||||||
ResourceDownloadEvent(
|
|
||||||
UpdateFailed("Unable to download resources: " + info)
|
|
||||||
).post();
|
).post();
|
||||||
}
|
}
|
||||||
);
|
else {
|
||||||
}
|
ResourceDownloadEvent(
|
||||||
|
UpdateFailed("Unable to check if tag exists: " + info)
|
||||||
|
).post();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Loader::Impl::verifyLoaderResources() {
|
bool Loader::Impl::verifyLoaderResources() {
|
||||||
|
@ -844,7 +843,7 @@ bool Loader::Impl::verifyLoaderResources() {
|
||||||
ghc::filesystem::is_directory(resourcesDir)
|
ghc::filesystem::is_directory(resourcesDir)
|
||||||
)) {
|
)) {
|
||||||
log::debug("Resources directory does not exist");
|
log::debug("Resources directory does not exist");
|
||||||
this->downloadLoaderResources();
|
this->downloadLoaderResources(true);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue