From e2d947ccd6947c9190569fedbb4a90505b5fe9a5 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 1 Oct 2018 04:51:42 +0200 Subject: Allow specifying project platform without arch --- src/Package.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'src/Package.cpp') 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 &supportedPlatforms, const char *platform) + static vector getPlatformsByNames(const vector &platformNames) { - for(const string &supportedPlatform : supportedPlatforms) + vector 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 getPackageMetadata(Value::ConstObject jsonObj) + + static Result getPackageMetadata(Value::ConstObject jsonObj) { const auto &description = jsonObj.FindMember("description"); if(description == jsonObj.MemberEnd() || !description->value.IsString()) return Result::Err("Expected description to be a string"); @@ -63,7 +62,7 @@ namespace sibs return Result::Ok(packageMetadata); } - Result getPackageUrl(const PackageMetadata &packageMetadata, const char *packageName, const char *packageVersion, const char *platform) + static Result 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::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::Ok(packageList); } - Result Package::getPackageUrl(const char *packageName, const char *packageVersion, const char *platform) + Result Package::getPackageUrl(const char *packageName, const char *packageVersion, Platform platform) { Result packageList = Package::getPackageList("https://gitlab.com/DEC05EBA/sibs_packages/raw/master/packages.json"); if(!packageList) -- cgit v1.2.3