diff options
| author | ruki <[email protected]> | 2019-09-28 23:14:48 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-09-28 23:14:48 +0800 |
| commit | 4df867463bac4c5987441696eabbf6a1f43ea9e4 (patch) | |
| tree | f9fe0a04d8bbd96b846e2f86510795ddd8f0ae10 /xmake/modules/private/action/update/fetch_version.lua | |
| parent | 63eb20ffd810c38ebd5f725d492d81c4e9a6e32d (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.lua | 87 |
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 + |
