diff options
author | V1K1NGbg <victor@ilchev.com> | 2024-08-22 17:49:06 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2024-10-21 13:30:51 -0300 |
commit | 89e3d89c96d2b18c61e085fd4b1fd490dfe0fe5a (patch) | |
tree | e6fc978bf3fcaf554577124d3b9420656088394d /src | |
parent | 124027953feb4d373089f0a6d75fd42ec956da47 (diff) | |
download | luarocks-89e3d89c96d2b18c61e085fd4b1fd490dfe0fe5a.tar.gz luarocks-89e3d89c96d2b18c61e085fd4b1fd490dfe0fe5a.tar.bz2 luarocks-89e3d89c96d2b18c61e085fd4b1fd490dfe0fe5a.zip |
Teal: convert luarocks.core.manif
Diffstat (limited to 'src')
-rw-r--r-- | src/luarocks/core/manif.tl (renamed from src/luarocks/core/manif.lua) | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/src/luarocks/core/manif.lua b/src/luarocks/core/manif.tl index 3925f636..f75bf28e 100644 --- a/src/luarocks/core/manif.lua +++ b/src/luarocks/core/manif.tl | |||
@@ -1,6 +1,7 @@ | |||
1 | 1 | ||
2 | --- Core functions for querying manifest files. | 2 | --- Core functions for querying manifest files. |
3 | local manif = {} | 3 | local record manif |
4 | end | ||
4 | 5 | ||
5 | local persist = require("luarocks.core.persist") | 6 | local persist = require("luarocks.core.persist") |
6 | local cfg = require("luarocks.core.cfg") | 7 | local cfg = require("luarocks.core.cfg") |
@@ -8,18 +9,27 @@ local dir = require("luarocks.core.dir") | |||
8 | local util = require("luarocks.core.util") | 9 | local util = require("luarocks.core.util") |
9 | local vers = require("luarocks.core.vers") | 10 | local vers = require("luarocks.core.vers") |
10 | local path = require("luarocks.core.path") | 11 | local path = require("luarocks.core.path") |
11 | local require = nil | 12 | |
12 | -------------------------------------------------------------------------------- | 13 | -------------------------------------------------------------------------------- |
13 | 14 | ||
15 | local type Tree = require("luarocks.core.types.tree").Tree | ||
16 | |||
17 | local type Query = require("luarocks.core.types.query").Query | ||
18 | |||
19 | local type Manifest = require("luarocks.core.types.manifest").Manifest | ||
20 | local type Tree_manifest = require("luarocks.core.types.manifest").Tree_manifest | ||
21 | |||
22 | |||
23 | |||
14 | -- Table with repository identifiers as keys and tables mapping | 24 | -- Table with repository identifiers as keys and tables mapping |
15 | -- Lua versions to cached loaded manifests as values. | 25 | -- Lua versions to cached loaded manifests as values. |
16 | local manifest_cache = {} | 26 | local manifest_cache: {string: {string: Manifest}} = {} |
17 | 27 | ||
18 | --- Cache a loaded manifest. | 28 | --- Cache a loaded manifest. |
19 | -- @param repo_url string: The repository identifier. | 29 | -- @param repo_url string: The repository identifier. |
20 | -- @param lua_version string: Lua version in "5.x" format, defaults to installed version. | 30 | -- @param lua_version string: Lua version in "5.x" format, defaults to installed version. |
21 | -- @param manifest table: the manifest to be cached. | 31 | -- @param manifest table: the manifest to be cached. |
22 | function manif.cache_manifest(repo_url, lua_version, manifest) | 32 | function manif.cache_manifest(repo_url: string, lua_version: string, manifest: Manifest) |
23 | lua_version = lua_version or cfg.lua_version | 33 | lua_version = lua_version or cfg.lua_version |
24 | manifest_cache[repo_url] = manifest_cache[repo_url] or {} | 34 | manifest_cache[repo_url] = manifest_cache[repo_url] or {} |
25 | manifest_cache[repo_url][lua_version] = manifest | 35 | manifest_cache[repo_url][lua_version] = manifest |
@@ -29,7 +39,7 @@ end | |||
29 | -- @param repo_url string: The repository identifier. | 39 | -- @param repo_url string: The repository identifier. |
30 | -- @param lua_version string: Lua version in "5.x" format, defaults to installed version. | 40 | -- @param lua_version string: Lua version in "5.x" format, defaults to installed version. |
31 | -- @return table or nil: loaded manifest or nil if cache is empty. | 41 | -- @return table or nil: loaded manifest or nil if cache is empty. |
32 | function manif.get_cached_manifest(repo_url, lua_version) | 42 | function manif.get_cached_manifest(repo_url: string, lua_version?: string): Manifest |
33 | lua_version = lua_version or cfg.lua_version | 43 | lua_version = lua_version or cfg.lua_version |
34 | return manifest_cache[repo_url] and manifest_cache[repo_url][lua_version] | 44 | return manifest_cache[repo_url] and manifest_cache[repo_url][lua_version] |
35 | end | 45 | end |
@@ -41,13 +51,14 @@ end | |||
41 | -- @param lua_version string: Lua version in "5.x" format, defaults to installed version. | 51 | -- @param lua_version string: Lua version in "5.x" format, defaults to installed version. |
42 | -- @return table or (nil, string, string): the manifest or nil, | 52 | -- @return table or (nil, string, string): the manifest or nil, |
43 | -- error message and error code ("open", "load", "run"). | 53 | -- error message and error code ("open", "load", "run"). |
44 | function manif.manifest_loader(file, repo_url, lua_version) | 54 | function manif.manifest_loader(file: string, repo_url: string, lua_version: string): Manifest, string | {any: any}, string |
45 | local manifest, err, errcode = persist.load_into_table(file) | 55 | local manifest, err, errcode: {any: any}, {any: any} | string, string = persist.load_into_table(file) |
46 | if not manifest then | 56 | if not manifest and err is string then |
47 | return nil, "Failed loading manifest for "..repo_url..": "..err, errcode | 57 | return nil, "Failed loading manifest for "..repo_url..": " .. err, errcode |
48 | end | 58 | end |
49 | manif.cache_manifest(repo_url, lua_version, manifest) | 59 | |
50 | return manifest, err, errcode | 60 | manif.cache_manifest(repo_url, lua_version, manifest as Manifest) -- No runtime check if manifest is actually a Manifest! |
61 | return manifest as Manifest, err, errcode | ||
51 | end | 62 | end |
52 | 63 | ||
53 | --- Load a local manifest describing a repository. | 64 | --- Load a local manifest describing a repository. |
@@ -55,8 +66,7 @@ end | |||
55 | -- @param repo_url string: URL or pathname for the repository. | 66 | -- @param repo_url string: URL or pathname for the repository. |
56 | -- @return table or (nil, string, string): A table representing the manifest, | 67 | -- @return table or (nil, string, string): A table representing the manifest, |
57 | -- or nil followed by an error message and an error code, see manifest_loader. | 68 | -- or nil followed by an error message and an error code, see manifest_loader. |
58 | function manif.fast_load_local_manifest(repo_url) | 69 | function manif.fast_load_local_manifest(repo_url: string): Manifest, string | {any: any}, string |
59 | assert(type(repo_url) == "string") | ||
60 | 70 | ||
61 | local cached_manifest = manif.get_cached_manifest(repo_url) | 71 | local cached_manifest = manif.get_cached_manifest(repo_url) |
62 | if cached_manifest then | 72 | if cached_manifest then |
@@ -64,13 +74,13 @@ function manif.fast_load_local_manifest(repo_url) | |||
64 | end | 74 | end |
65 | 75 | ||
66 | local pathname = dir.path(repo_url, "manifest") | 76 | local pathname = dir.path(repo_url, "manifest") |
67 | return manif.manifest_loader(pathname, repo_url, nil, true) | 77 | return manif.manifest_loader(pathname, repo_url, nil) |
68 | end | 78 | end |
69 | 79 | ||
70 | function manif.load_rocks_tree_manifests(deps_mode) | 80 | function manif.load_rocks_tree_manifests(deps_mode?: string): {Tree_manifest} |
71 | local trees = {} | 81 | local trees = {} |
72 | path.map_trees(deps_mode, function(tree) | 82 | path.map_trees(deps_mode, function(tree: Tree) |
73 | local manifest, err = manif.fast_load_local_manifest(path.rocks_dir(tree)) | 83 | local manifest= manif.fast_load_local_manifest(path.rocks_dir(tree)) |
74 | if manifest then | 84 | if manifest then |
75 | table.insert(trees, {tree=tree, manifest=manifest}) | 85 | table.insert(trees, {tree=tree, manifest=manifest}) |
76 | end | 86 | end |
@@ -78,7 +88,7 @@ function manif.load_rocks_tree_manifests(deps_mode) | |||
78 | return trees | 88 | return trees |
79 | end | 89 | end |
80 | 90 | ||
81 | function manif.scan_dependencies(name, version, tree_manifests, dest) | 91 | function manif.scan_dependencies(name: string, version: string, tree_manifests: {Tree_manifest}, dest: {any: any}) |
82 | if dest[name] then | 92 | if dest[name] then |
83 | return | 93 | return |
84 | end | 94 | end |
@@ -87,7 +97,7 @@ function manif.scan_dependencies(name, version, tree_manifests, dest) | |||
87 | for _, tree in ipairs(tree_manifests) do | 97 | for _, tree in ipairs(tree_manifests) do |
88 | local manifest = tree.manifest | 98 | local manifest = tree.manifest |
89 | 99 | ||
90 | local pkgdeps | 100 | local pkgdeps: {Query} |
91 | if manifest.dependencies and manifest.dependencies[name] then | 101 | if manifest.dependencies and manifest.dependencies[name] then |
92 | pkgdeps = manifest.dependencies[name][version] | 102 | pkgdeps = manifest.dependencies[name][version] |
93 | end | 103 | end |