summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorruki <[email protected]>2023-01-31 11:39:31 +0800
committerGitHub <[email protected]>2023-01-31 11:39:31 +0800
commite0b230efd273e6afec56a33f8ad3b606394192ec (patch)
tree71907146af62cd5419decbce1fe4f6db74f87741 /core
parent7dccbc709bafaec3be01d9723b7b9150f7092a5b (diff)
parent90415ee4d3a21c09086b6012085443fb098c3bec (diff)
Merge pull request #3322 from xmake-io/package
improve semver.satisfies
Diffstat (limited to 'core')
-rw-r--r--core/src/xmake/semver/satisfies.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/core/src/xmake/semver/satisfies.c b/core/src/xmake/semver/satisfies.c
index f79167748..5a3ab6045 100644
--- a/core/src/xmake/semver/satisfies.c
+++ b/core/src/xmake/semver/satisfies.c
@@ -52,12 +52,32 @@ tb_int_t xm_semver_satisfies(lua_State* lua)
semver_range_t range = {0};
if (semver_rangen(&range, range_str, tb_strlen(range_str)))
{
- // is branch name? try to match it
+ // range is branch name? try to match it
+ semver_t range_semver = {0};
if (!tb_strcmp(version_str, range_str))
{
lua_pushboolean(lua, tb_true);
return 1;
}
+ // range is a single version? try to compare it
+ else if (!semver_tryn(&range_semver, range_str, tb_strlen(range_str)))
+ {
+ semver_t semver = {0};
+ if (!semver_tryn(&semver, version_str, tb_strlen(version_str)))
+ {
+ lua_pushboolean(lua, semver_pcmp(&semver, &range_semver) == 0);
+ semver_dtor(&semver);
+ semver_dtor(&range_semver);
+ return 1;
+ }
+ else
+ {
+ semver_dtor(&range_semver);
+ lua_pushnil(lua);
+ lua_pushfstring(lua, "unable to parse semver '%s'", version_str);
+ return 2;
+ }
+ }
else
{
lua_pushnil(lua);
@@ -79,7 +99,5 @@ tb_int_t xm_semver_satisfies(lua_State* lua)
lua_pushboolean(lua, semver_range_match(semver, range));
semver_dtor(&semver);
semver_range_dtor(&range);
-
- // ok
return 1;
}