diff options
Diffstat (limited to 'src/Package.cpp')
-rw-r--r-- | src/Package.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/Package.cpp b/src/Package.cpp index 9ba26cd..6773265 100644 --- a/src/Package.cpp +++ b/src/Package.cpp @@ -13,19 +13,18 @@ static Document *packageList = nullptr; namespace sibs { - // TODO: Use containsPlatform in Conf.hpp instead? dont need a vector of string when we can use vector of enum - bool containsPlatform(const vector<string> &supportedPlatforms, const char *platform) + static vector<Platform> getPlatformsByNames(const vector<string> &platformNames) { - for(const string &supportedPlatform : supportedPlatforms) + vector<Platform> result; + result.reserve(platformNames.size()); + for(const string &platformName : platformNames) { - if(strcmp(supportedPlatform.c_str(), platform) == 0 || strcmp(supportedPlatform.c_str(), "any") == 0) - return true; + result.push_back(getPlatformByName(StringView(platformName.data(), platformName.size()))); } - - return false; + return result; } - - Result<PackageMetadata> getPackageMetadata(Value::ConstObject jsonObj) + + static Result<PackageMetadata> getPackageMetadata(Value::ConstObject jsonObj) { const auto &description = jsonObj.FindMember("description"); if(description == jsonObj.MemberEnd() || !description->value.IsString()) return Result<PackageMetadata>::Err("Expected description to be a string"); @@ -63,7 +62,7 @@ namespace sibs return Result<PackageMetadata>::Ok(packageMetadata); } - Result<string> getPackageUrl(const PackageMetadata &packageMetadata, const char *packageName, const char *packageVersion, const char *platform) + static Result<string> getPackageUrl(const PackageMetadata &packageMetadata, const char *packageName, const char *packageVersion, Platform platform) { if(strcmp(packageMetadata.version.c_str(), packageVersion) != 0) { @@ -75,7 +74,7 @@ namespace sibs return Result<string>::Err(errMsg); } - if(!containsPlatform(packageMetadata.platforms, platform)) + if(!containsPlatform(getPlatformsByNames(packageMetadata.platforms), platform)) { string errMsg = "Package \""; errMsg += packageName; @@ -121,7 +120,7 @@ namespace sibs return Result<Document*>::Ok(packageList); } - Result<string> Package::getPackageUrl(const char *packageName, const char *packageVersion, const char *platform) + Result<string> Package::getPackageUrl(const char *packageName, const char *packageVersion, Platform platform) { Result<Document*> packageList = Package::getPackageList("https://gitlab.com/DEC05EBA/sibs_packages/raw/master/packages.json"); if(!packageList) |