Mercurial > repo
annotate share/lua/5.2/luarocks/cache.lua @ 9411:5357f4467be3
<oerjan> slwd fisdom//s/f/F/
author | HackBot |
---|---|
date | Sun, 23 Oct 2016 04:19:11 +0000 |
parents | d137f631bad5 |
children |
rev | line source |
---|---|
1132
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
1 |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
2 --- Module handling the LuaRocks local cache. |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
3 -- Adds a rock or rockspec to a rocks server. |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
4 module("luarocks.cache", package.seeall) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
5 |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
6 local fs = require("luarocks.fs") |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
7 local cfg = require("luarocks.cfg") |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
8 local dir = require("luarocks.dir") |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
9 local util = require("luarocks.util") |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
10 |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
11 function get_upload_server(server) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
12 if not server then server = cfg.upload_server end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
13 if not server then |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
14 return nil, "No server specified and no default configured with upload_server." |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
15 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
16 return server, cfg.upload_servers and cfg.upload_servers[server] |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
17 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
18 |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
19 function get_server_urls(server, upload_server) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
20 local download_url = server |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
21 local login_url = nil |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
22 if upload_server then |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
23 if upload_server.rsync then download_url = "rsync://"..upload_server.rsync |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
24 elseif upload_server.http then download_url = "http://"..upload_server.http |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
25 elseif upload_server.ftp then download_url = "ftp://"..upload_server.ftp |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
26 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
27 |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
28 if upload_server.ftp then login_url = "ftp://"..upload_server.ftp |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
29 elseif upload_server.sftp then login_url = "sftp://"..upload_server.sftp |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
30 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
31 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
32 return download_url, login_url |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
33 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
34 |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
35 function split_server_url(server, url, user, password) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
36 local protocol, server_path = dir.split_url(url) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
37 if server_path:match("@") then |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
38 local credentials |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
39 credentials, server_path = server_path:match("([^@]*)@(.*)") |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
40 if credentials:match(":") then |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
41 user, password = credentials:match("([^:]*):(.*)") |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
42 else |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
43 user = credentials |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
44 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
45 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
46 local local_cache |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
47 if cfg.local_cache then |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
48 local_cache = cfg.local_cache .. "/" .. server |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
49 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
50 return local_cache, protocol, server_path, user, password |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
51 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
52 |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
53 function refresh_local_cache(server, url, user, password) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
54 local local_cache, protocol, server_path, user, password = split_server_url(server, url, user, password) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
55 |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
56 fs.make_dir(cfg.local_cache) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
57 |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
58 local tmp_cache = false |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
59 if not local_cache then |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
60 local_cache = fs.make_temp_dir("local_cache") |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
61 tmp_cache = true |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
62 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
63 local ok = fs.make_dir(local_cache) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
64 if not ok then |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
65 return nil, "Failed creating local cache dir." |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
66 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
67 fs.change_dir(local_cache) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
68 util.printout("Refreshing cache "..local_cache.."...") |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
69 |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
70 -- TODO abstract away explicit 'wget' call |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
71 local ok = false |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
72 if protocol == "rsync" then |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
73 local srv, path = server_path:match("([^/]+)(/.+)") |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
74 ok = fs.execute(cfg.variables.RSYNC.." -avz -e ssh "..user.."@"..srv..":"..path.."/ "..local_cache.."/") |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
75 else |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
76 local login_info = "" |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
77 if user then login_info = " --user="..user end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
78 if password then login_info = login_info .. " --password="..password end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
79 ok = fs.execute(cfg.variables.WGET.." --no-cache -q -m -np -nd "..protocol.."://"..server_path..login_info) |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
80 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
81 if not ok then |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
82 return nil, "Failed downloading cache." |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
83 end |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
84 return local_cache, protocol, server_path, user, password |
d137f631bad5
<GreyKnight> (cd luabuild/luarocks-2.0.12; make install)
HackBot
parents:
diff
changeset
|
85 end |