diff options
| author | ruki <[email protected]> | 2020-06-24 00:40:19 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-06-23 22:01:57 +0800 |
| commit | 18bded45c229f5580c13fc8b4afc5edb6f18819a (patch) | |
| tree | 52b63db3274349f9a41872414208c7c30058cfd7 /xmake/modules/devel/git/pull.lua | |
| parent | 39e0626b0879f882812a178519b0a0998411866e (diff) | |
improve proxy
Diffstat (limited to 'xmake/modules/devel/git/pull.lua')
| -rw-r--r-- | xmake/modules/devel/git/pull.lua | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/xmake/modules/devel/git/pull.lua b/xmake/modules/devel/git/pull.lua index 6e0f0a735..2320c51bd 100644 --- a/xmake/modules/devel/git/pull.lua +++ b/xmake/modules/devel/git/pull.lua @@ -20,8 +20,8 @@ -- imports import("core.base.option") -import("core.base.global") import("lib.detect.find_tool") +import("net.proxy") -- pull remote commits -- @@ -66,9 +66,23 @@ function main(opt) -- use proxy? local envs - local proxy = global.get("proxy") - if proxy then - envs = {ALL_PROXY = proxy} + local proxy_conf = proxy.get() + if proxy_conf then + -- get proxy configuration from the current remote url + local remoteinfo = try { function() return os.iorunv(git.program, {"remote", "-v"}) end } + if remoteinfo then + for _, line in ipairs(remoteinfo:split('\n', {plain = true})) do + local splitinfo = line:split("%s+") + if #splitinfo > 1 and splitinfo[1] == (opt.remote or "origin") then + local url = splitinfo[2] + if url then + proxy_conf = proxy.get(url) + end + break + end + end + end + envs = {ALL_PROXY = proxy_conf} end -- pull it |
