summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
authorruki <[email protected]>2017-09-14 00:33:00 +0800
committerruki <[email protected]>2017-09-13 21:18:02 +0800
commitd0ab158cac68ffc22396c8d9a83624625ca05f7c (patch)
treebfee14c99d0a4077ffdd0a1ddf1025cc6ea71c9d /core/src
parentb1af9888679f0ac9384bba23a1b9d99d7b165db8 (diff)
improve semver satisfies
Diffstat (limited to 'core/src')
-rw-r--r--core/src/xmake/semver/satisfies.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/core/src/xmake/semver/satisfies.c b/core/src/xmake/semver/satisfies.c
index f630558d9..e22bb8582 100644
--- a/core/src/xmake/semver/satisfies.c
+++ b/core/src/xmake/semver/satisfies.c
@@ -52,6 +52,24 @@ tb_int_t xm_semver_satisfies(lua_State* lua)
tb_char_t const* range_str = luaL_checkstring(lua, 2);
tb_assert_and_check_return_val(version_str && range_str, 0);
+ // parse the version range string
+ semver_range_t range = {0};
+ if (semver_rangen(&range, range_str, tb_strlen(range_str)))
+ {
+ // is branch name? try to match it
+ if (!tb_strcmp(version_str, range_str))
+ {
+ lua_pushboolean(lua, tb_true);
+ return 1;
+ }
+ else
+ {
+ lua_pushnil(lua);
+ lua_pushfstring(lua, "unable to parse semver range '%s'", range_str);
+ return 2;
+ }
+ }
+
// parse the version string
semver_t semver = {0};
if (semvern(&semver, version_str, tb_strlen(version_str)))
@@ -61,16 +79,6 @@ tb_int_t xm_semver_satisfies(lua_State* lua)
return 2;
}
- // parse the version range string
- semver_range_t range = {0};
- if (semver_rangen(&range, range_str, tb_strlen(range_str)))
- {
- semver_dtor(&semver);
- lua_pushnil(lua);
- lua_pushfstring(lua, "unable to parse semver range '%s'", range_str);
- return 2;
- }
-
// satisfies this range?
lua_pushboolean(lua, semver_range_match(semver, range));
semver_dtor(&semver);