aboutsummaryrefslogtreecommitdiff
path: root/src/Package.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2018-10-01 04:51:42 +0200
committerdec05eba <dec05eba@protonmail.com>2020-07-06 07:39:33 +0200
commite2d947ccd6947c9190569fedbb4a90505b5fe9a5 (patch)
tree943167a2aae91af3164e5cd80a96b08826952d23 /src/Package.cpp
parent63cedcab19474cae0a4b1322600355ddc23d56d0 (diff)
Allow specifying project platform without arch
Diffstat (limited to 'src/Package.cpp')
-rw-r--r--src/Package.cpp23
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)