diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-10-01 04:51:42 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-07-06 07:39:33 +0200 |
commit | e2d947ccd6947c9190569fedbb4a90505b5fe9a5 (patch) | |
tree | 943167a2aae91af3164e5cd80a96b08826952d23 /src/Package.cpp | |
parent | 63cedcab19474cae0a4b1322600355ddc23d56d0 (diff) |
Allow specifying project platform without arch
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) |