diff options
| author | ruki <[email protected]> | 2023-01-31 11:39:31 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-01-31 11:39:31 +0800 |
| commit | e0b230efd273e6afec56a33f8ad3b606394192ec (patch) | |
| tree | 71907146af62cd5419decbce1fe4f6db74f87741 /core | |
| parent | 7dccbc709bafaec3be01d9723b7b9150f7092a5b (diff) | |
| parent | 90415ee4d3a21c09086b6012085443fb098c3bec (diff) | |
Merge pull request #3322 from xmake-io/package
improve semver.satisfies
Diffstat (limited to 'core')
| -rw-r--r-- | core/src/xmake/semver/satisfies.c | 24 |
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; } |
