aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorV1K1NGbg <victor@ilchev.com>2024-08-22 17:48:59 -0300
committerHisham Muhammad <hisham@gobolinux.org>2024-10-21 13:30:51 -0300
commit8f656b5a26c6c5352589e8ed294a8c27871b65a7 (patch)
tree3155f025f97741dfa69911d9fe503df4226ecca2 /src
parentdf302d44df3851a79ca8e5b4cd088ef2e1d8fb62 (diff)
downloadluarocks-8f656b5a26c6c5352589e8ed294a8c27871b65a7.tar.gz
luarocks-8f656b5a26c6c5352589e8ed294a8c27871b65a7.tar.bz2
luarocks-8f656b5a26c6c5352589e8ed294a8c27871b65a7.zip
Teal: convert luarocks.download
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/download.tl70
1 files changed, 39 insertions, 31 deletions
diff --git a/src/luarocks/download.tl b/src/luarocks/download.tl
index 07a2a65f..f993da0f 100644
--- a/src/luarocks/download.tl
+++ b/src/luarocks/download.tl
@@ -1,4 +1,5 @@
1local download = {} 1local record download
2end
2 3
3local path = require("luarocks.path") 4local path = require("luarocks.path")
4local fetch = require("luarocks.fetch") 5local fetch = require("luarocks.fetch")
@@ -8,7 +9,7 @@ local fs = require("luarocks.fs")
8local dir = require("luarocks.dir") 9local dir = require("luarocks.dir")
9local util = require("luarocks.util") 10local util = require("luarocks.util")
10 11
11local function get_file(filename) 12local function get_file(filename: string): string, string
12 local protocol, pathname = dir.split_url(filename) 13 local protocol, pathname = dir.split_url(filename)
13 if protocol == "file" then 14 if protocol == "file" then
14 local ok, err = fs.copy(pathname, fs.current_dir(), "read") 15 local ok, err = fs.copy(pathname, fs.current_dir(), "read")
@@ -24,43 +25,50 @@ local function get_file(filename)
24 end 25 end
25end 26end
26 27
27function download.download(arch, name, namespace, version, all, check_lua_versions) 28function download.download_all(arch: string, name: string, namespace: string, version: string): boolean, string
28 local substring = (all and name == "") 29 local substring = (name == "")
29 local query = queries.new(name, namespace, version, substring, arch) 30 local query = queries.new(name, namespace, version, substring, arch)
30 local search_err 31 local search_err: string
31 32
32 if all then 33 local results = search.search_repos(query)
33 local results = search.search_repos(query) 34 local has_result = false
34 local has_result = false 35 local all_ok = true
35 local all_ok = true 36 local any_err = ""
36 local any_err = "" 37 for name, result in pairs(results) do -- luacheck: ignore 422
37 for name, result in pairs(results) do -- luacheck: ignore 422 38 for version, items in pairs(result) do -- luacheck: ignore 422
38 for version, items in pairs(result) do -- luacheck: ignore 422 39 for _, item in ipairs(items) do
39 for _, item in ipairs(items) do 40 -- Ignore provided rocks.
40 -- Ignore provided rocks. 41 if item.arch ~= "installed" then
41 if item.arch ~= "installed" then 42 has_result = true
42 has_result = true 43 local filename = path.make_url(item.repo, name, version, item.arch)
43 local filename = path.make_url(item.repo, name, version, item.arch) 44 local ok, err = get_file(filename)
44 local ok, err = get_file(filename) 45 if not ok then
45 if not ok then 46 all_ok = false
46 all_ok = false 47 any_err = any_err .. "\n" .. err
47 any_err = any_err .. "\n" .. err
48 end
49 end 48 end
50 end 49 end
51 end 50 end
52 end 51 end
52 end
53 53
54 if has_result then 54 if has_result then
55 return all_ok, any_err 55 return all_ok, any_err
56 end 56 end
57 else 57
58 local url 58 local rock = util.format_rock_name(name, namespace, version)
59 url, search_err = search.find_rock_checking_lua_versions(query, check_lua_versions) 59 return nil, "Could not find a result named "..rock..(search_err and ": "..search_err or ".")
60 if url then 60end
61 return get_file(url) 61
62 end 62function download.download_file(arch: string, name: string, namespace?: string, version?: string, check_lua_versions?: boolean): string, string
63 local query = queries.new(name, namespace, version, false, arch)
64 local search_err: string
65
66 local url: string
67 url, search_err = search.find_rock_checking_lua_versions(query, check_lua_versions)
68 if url then
69 return get_file(url)
63 end 70 end
71
64 local rock = util.format_rock_name(name, namespace, version) 72 local rock = util.format_rock_name(name, namespace, version)
65 return nil, "Could not find a result named "..rock..(search_err and ": "..search_err or ".") 73 return nil, "Could not find a result named "..rock..(search_err and ": "..search_err or ".")
66end 74end