summaryrefslogtreecommitdiff
path: root/xmake/modules/private/action/update/fetch_version.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2019-09-28 23:14:48 +0800
committerruki <[email protected]>2019-09-28 23:14:48 +0800
commit4df867463bac4c5987441696eabbf6a1f43ea9e4 (patch)
treef9fe0a04d8bbd96b846e2f86510795ddd8f0ae10 /xmake/modules/private/action/update/fetch_version.lua
parent63eb20ffd810c38ebd5f725d492d81c4e9a6e32d (diff)
add new version tips
Diffstat (limited to 'xmake/modules/private/action/update/fetch_version.lua')
-rw-r--r--xmake/modules/private/action/update/fetch_version.lua87
1 files changed, 87 insertions, 0 deletions
diff --git a/xmake/modules/private/action/update/fetch_version.lua b/xmake/modules/private/action/update/fetch_version.lua
new file mode 100644
index 000000000..4ddf304c7
--- /dev/null
+++ b/xmake/modules/private/action/update/fetch_version.lua
@@ -0,0 +1,87 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015 - 2019, TBOOX Open Source Group.
+--
+-- @author OpportunityLiu, ruki
+-- @file fetch_version.lua
+--
+
+-- imports
+import("core.base.semver")
+import("core.base.option")
+import("core.base.task")
+import("net.http")
+import("devel.git")
+import("net.fasturl")
+
+-- the official git sources for xmake
+local official_sources =
+{
+ "https://github.com/xmake-io/xmake.git",
+ "https://gitlab.com/tboox/xmake.git",
+ "https://gitee.com/tboox/xmake.git"
+}
+
+-- get version and url of provided xmakever
+function main(xmakever)
+
+ -- init xmakever
+ xmakever = xmakever or "lastest"
+
+ -- parse url and commit
+ local commitish = nil
+ local custom_url = nil
+ local seg = xmakever:split('#', { plain = true, limit = 2, strict = true })
+ if #seg == 2 then
+ if #seg[1] ~= 0 then
+ custom_url = seg[1]
+ end
+ commitish = seg[2]
+ else
+ if xmakever:find(':', 1, true) then
+ custom_url = xmakever
+ else
+ commitish = xmakever
+ end
+ end
+
+ local urls = nil
+ if custom_url then
+ urls = { git.asgiturl(custom_url) or custom_url }
+ vprint("using custom source: %s ..", urls[1] )
+ else
+ urls = official_sources
+ end
+ commitish = (commitish and #commitish > 0) and commitish or "lastest"
+
+ -- sort urls
+ if #urls > 1 then
+ fasturl.add(urls)
+ urls = fasturl.sort(urls)
+ end
+
+ -- get version
+ local version = nil
+ local tags, branches
+ for _, url in ipairs(urls) do
+ tags, branches = git.refs(url)
+ if tags or branches then
+ version = semver.select(commitish, tags or {}, tags or {}, branches or {})
+ break
+ end
+ end
+ return {is_official = (urls == official_sources), urls = urls, version = (version or "master"), tags = tags, branches = branches}
+end
+