summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-05-18 18:03:12 +0800
committerruki <[email protected]>2017-05-18 18:03:12 +0800
commite4ad50a4aca318850bad751c8372994d6a7d9f80 (patch)
tree3ed13444c95f8b10da6d65f550cfbd21dd7e3af6
parent75cfb11546cd271ebb8b251d291ad9c7b6277b66 (diff)
add git.refs tags and branches
-rw-r--r--xmake/modules/devel/git/branches.lua47
-rw-r--r--xmake/modules/devel/git/ls_remote.lua8
-rw-r--r--xmake/modules/devel/git/refs.lua64
-rw-r--r--xmake/modules/devel/git/tags.lua47
4 files changed, 163 insertions, 3 deletions
diff --git a/xmake/modules/devel/git/branches.lua b/xmake/modules/devel/git/branches.lua
new file mode 100644
index 000000000..dbca97a93
--- /dev/null
+++ b/xmake/modules/devel/git/branches.lua
@@ -0,0 +1,47 @@
+--!The Make-like Build Utility based on Lua
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you 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 - 2017, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file branches.lua
+--
+
+-- imports
+import("core.base.option")
+import("ls_remote")
+
+-- get all branches from url
+--
+-- @param url the remote url, optional
+--
+-- @return the branches
+--
+-- @code
+--
+-- import("devel.git")
+--
+-- local branches = git.branches(url)
+--
+-- @endcode
+--
+function main(url)
+
+ -- get branches
+ return ls_remote("heads", url)
+end
diff --git a/xmake/modules/devel/git/ls_remote.lua b/xmake/modules/devel/git/ls_remote.lua
index 11e19a98c..6ffb77d10 100644
--- a/xmake/modules/devel/git/ls_remote.lua
+++ b/xmake/modules/devel/git/ls_remote.lua
@@ -31,13 +31,15 @@ import("detect.tool.find_git")
-- @param reftype the reference type, "tags", "heads" and "refs"
-- @param url the remote url, optional
--
+-- @return the tags, heads or refs
+--
-- @code
--
-- import("devel.git")
--
--- git.ls_remote("tags", url)
--- git.ls_remote("heads", url)
--- git.ls_remote("refs")
+-- local tags = git.ls_remote("tags", url)
+-- local heads = git.ls_remote("heads", url)
+-- local refs = git.ls_remote("refs")
--
-- @endcode
--
diff --git a/xmake/modules/devel/git/refs.lua b/xmake/modules/devel/git/refs.lua
new file mode 100644
index 000000000..306b2fd26
--- /dev/null
+++ b/xmake/modules/devel/git/refs.lua
@@ -0,0 +1,64 @@
+--!The Make-like Build Utility based on Lua
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you 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 - 2017, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file refs.lua
+--
+
+-- imports
+import("core.base.option")
+import("ls_remote")
+
+-- get all refs from url, contains tags and branchs
+--
+-- @param url the remote url, optional
+--
+-- @return the refs
+--
+-- @code
+--
+-- import("devel.git")
+--
+-- local refs = git.refs(url)
+--
+-- @endcode
+--
+function main(url)
+
+ -- get refs
+ local refs = ls_remote("refs", url)
+ if not refs or #refs == 0 then
+ return {}
+ end
+
+ -- get tags and branches
+ local tags = {}
+ local branches = {}
+ for _, ref in ipairs(refs) do
+ if ref:startswith("tags/") then
+ table.insert(tags, ref:sub(6))
+ elseif ref:startswith("heads/") then
+ table.insert(branches, ref:sub(7))
+ end
+ end
+
+ -- ok
+ return {tags = tags, branches = branches}
+end
diff --git a/xmake/modules/devel/git/tags.lua b/xmake/modules/devel/git/tags.lua
new file mode 100644
index 000000000..3ccdc3a2f
--- /dev/null
+++ b/xmake/modules/devel/git/tags.lua
@@ -0,0 +1,47 @@
+--!The Make-like Build Utility based on Lua
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you 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 - 2017, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file tags.lua
+--
+
+-- imports
+import("core.base.option")
+import("ls_remote")
+
+-- get all tags from url
+--
+-- @param url the remote url, optional
+--
+-- @return the tags
+--
+-- @code
+--
+-- import("devel.git")
+--
+-- local tags = git.tags(url)
+--
+-- @endcode
+--
+function main(url)
+
+ -- get tags
+ return ls_remote("tags", url)
+end