diff options
| author | V1K1NGbg <victor@ilchev.com> | 2024-07-25 18:12:29 +0300 |
|---|---|---|
| committer | V1K1NGbg <victor@ilchev.com> | 2024-08-05 20:49:17 +0300 |
| commit | 1f01bc98f91546a03b777202ce0f52f827dbd321 (patch) | |
| tree | 822f11b41d2ad82ba886aadd6be31306b2e52520 | |
| parent | 2bce023b2397b79731150d68d7b3c053959abf9c (diff) | |
| download | luarocks-1f01bc98f91546a03b777202ce0f52f827dbd321.tar.gz luarocks-1f01bc98f91546a03b777202ce0f52f827dbd321.tar.bz2 luarocks-1f01bc98f91546a03b777202ce0f52f827dbd321.zip | |
almost finished util and persist
| -rw-r--r-- | src/luarocks/core/cfg.d.tl | 3 | ||||
| -rw-r--r-- | src/luarocks/core/util.tl | 7 | ||||
| -rw-r--r-- | src/luarocks/fs.d.tl | 1 | ||||
| -rw-r--r-- | src/luarocks/path.tl | 2 | ||||
| -rw-r--r-- | src/luarocks/persist.tl | 17 | ||||
| -rw-r--r-- | src/luarocks/util.tl | 84 |
6 files changed, 41 insertions, 73 deletions
diff --git a/src/luarocks/core/cfg.d.tl b/src/luarocks/core/cfg.d.tl index 1cc35061..f21bd64c 100644 --- a/src/luarocks/core/cfg.d.tl +++ b/src/luarocks/core/cfg.d.tl | |||
| @@ -54,8 +54,9 @@ local record cfg | |||
| 54 | record cache | 54 | record cache |
| 55 | luajit_version_checked: boolean | 55 | luajit_version_checked: boolean |
| 56 | luajit_version: string | 56 | luajit_version: string |
| 57 | rocks_provided: {Rockspec} | 57 | rocks_provided: {string: string} --? right type? infered from |
| 58 | end | 58 | end |
| 59 | |||
| 59 | record variables | 60 | record variables |
| 60 | LUA: string | 61 | LUA: string |
| 61 | end | 62 | end |
diff --git a/src/luarocks/core/util.tl b/src/luarocks/core/util.tl index e934c52a..d23d1b59 100644 --- a/src/luarocks/core/util.tl +++ b/src/luarocks/core/util.tl | |||
| @@ -5,15 +5,14 @@ local record util | |||
| 5 | 5 | ||
| 6 | sub_orders: {K: Ordering<K>} | 6 | sub_orders: {K: Ordering<K>} |
| 7 | end | 7 | end |
| 8 | |||
| 9 | type SortBy<K> = table.SortFunction<K> | util.Ordering<K> | ||
| 8 | end | 10 | end |
| 9 | 11 | ||
| 10 | -------------------------------------------------------------------------------- | 12 | -------------------------------------------------------------------------------- |
| 11 | 13 | ||
| 12 | local dir_sep = package.config:sub(1, 1) | 14 | local dir_sep = package.config:sub(1, 1) |
| 13 | 15 | ||
| 14 | local type SortBy<K> = table.SortFunction<K> | util.Ordering<K> | ||
| 15 | |||
| 16 | |||
| 17 | --- Run a process and read a its output. | 16 | --- Run a process and read a its output. |
| 18 | -- Equivalent to io.popen(cmd):read("*l"), except that it | 17 | -- Equivalent to io.popen(cmd):read("*l"), except that it |
| 19 | -- closes the fd right away. | 18 | -- closes the fd right away. |
| @@ -293,7 +292,7 @@ end | |||
| 293 | -- for that key, which is returned by the iterator as the third value after the key | 292 | -- for that key, which is returned by the iterator as the third value after the key |
| 294 | -- and the value. | 293 | -- and the value. |
| 295 | -- @return function: the iterator function. | 294 | -- @return function: the iterator function. |
| 296 | function util.sortedpairs<K, V>(tbl: {K: V}, sort_by?: SortBy<K>): function(): K, V, util.Ordering<K> | 295 | function util.sortedpairs<K, V>(tbl: {K: V}, sort_by?: util.SortBy<K>): function(): K, V, util.Ordering<K> |
| 297 | local keys = util.keys(tbl) | 296 | local keys = util.keys(tbl) |
| 298 | local sub_orders: {K: util.Ordering<K>} = nil | 297 | local sub_orders: {K: util.Ordering<K>} = nil |
| 299 | 298 | ||
diff --git a/src/luarocks/fs.d.tl b/src/luarocks/fs.d.tl index 0334329d..fe96b742 100644 --- a/src/luarocks/fs.d.tl +++ b/src/luarocks/fs.d.tl | |||
| @@ -9,6 +9,7 @@ local record fs | |||
| 9 | -- util | 9 | -- util |
| 10 | is_dir: function(dir: string): boolean | 10 | is_dir: function(dir: string): boolean |
| 11 | dir: function(dir: string): function(): string --? right iterator | 11 | dir: function(dir: string): function(): string --? right iterator |
| 12 | make_dir: function | ||
| 12 | is_file: function(file: string): boolean | 13 | is_file: function(file: string): boolean |
| 13 | current_dir: function(): string | 14 | current_dir: function(): string |
| 14 | list_dir: function(string): {string} | 15 | list_dir: function(string): {string} |
diff --git a/src/luarocks/path.tl b/src/luarocks/path.tl index ffcf26c8..5682a2f7 100644 --- a/src/luarocks/path.tl +++ b/src/luarocks/path.tl | |||
| @@ -72,7 +72,7 @@ end | |||
| 72 | -- @param tree string or nil: If given, specifies the local tree to use. | 72 | -- @param tree string or nil: If given, specifies the local tree to use. |
| 73 | -- @return string: The resulting path -- does not guarantee that | 73 | -- @return string: The resulting path -- does not guarantee that |
| 74 | -- the package (and by extension, the path) exists. | 74 | -- the package (and by extension, the path) exists. |
| 75 | function path.install_dir(name: string, version: string, tree: string | Tree): string | 75 | function path.install_dir(name: string, version: string, tree?: string | Tree): string |
| 76 | assert(not name:match("/")) | 76 | assert(not name:match("/")) |
| 77 | return dir.path(path.rocks_dir(tree), name, version) | 77 | return dir.path(path.rocks_dir(tree), name, version) |
| 78 | end | 78 | end |
diff --git a/src/luarocks/persist.tl b/src/luarocks/persist.tl index f02fcfee..95fc39d9 100644 --- a/src/luarocks/persist.tl +++ b/src/luarocks/persist.tl | |||
| @@ -7,7 +7,6 @@ local record persist | |||
| 7 | end | 7 | end |
| 8 | 8 | ||
| 9 | local core = require("luarocks.core.persist") | 9 | local core = require("luarocks.core.persist") |
| 10 | local coreutil = require("luarocks.core.util") | ||
| 11 | local util = require("luarocks.util") | 10 | local util = require("luarocks.util") |
| 12 | local dir = require("luarocks.dir") | 11 | local dir = require("luarocks.dir") |
| 13 | local fs = require("luarocks.fs") | 12 | local fs = require("luarocks.fs") |
| @@ -15,13 +14,11 @@ local fs = require("luarocks.fs") | |||
| 15 | persist.run_file = core.run_file | 14 | persist.run_file = core.run_file |
| 16 | persist.load_into_table = core.load_into_table | 15 | persist.load_into_table = core.load_into_table |
| 17 | 16 | ||
| 18 | local type SortBy<K> = table.SortFunction<K> | coreutil.Ordering<K> | ||
| 19 | |||
| 20 | local interface Writer | 17 | local interface Writer |
| 21 | write: function(self: Writer, data: string) | 18 | write: function(self: Writer, data: string) |
| 22 | end | 19 | end |
| 23 | 20 | ||
| 24 | local write_table: function(out: Writer, tbl: {number | string: number| string}, level: integer, field_order: SortBy<number | string>) | 21 | local write_table: function(out: Writer, tbl: {number | string: number| string}, level: integer, field_order: util.SortBy<number | string>) |
| 25 | 22 | ||
| 26 | --- Write a value as Lua code. | 23 | --- Write a value as Lua code. |
| 27 | -- This function handles only numbers and strings, invoking write_table | 24 | -- This function handles only numbers and strings, invoking write_table |
| @@ -31,7 +28,7 @@ local write_table: function(out: Writer, tbl: {number | string: number| string}, | |||
| 31 | -- @param level number: the indentation level | 28 | -- @param level number: the indentation level |
| 32 | -- @param sub_order table: optional prioritization table | 29 | -- @param sub_order table: optional prioritization table |
| 33 | -- @see write_table | 30 | -- @see write_table |
| 34 | function persist.write_value(out: Writer, v: any, level: integer, sub_order?: SortBy<number | string>) | 31 | function persist.write_value(out: Writer, v: any, level: integer, sub_order?: util.SortBy<number | string>) |
| 35 | if v is {number | string: number | string} then | 32 | if v is {number | string: number | string} then |
| 36 | level = level or 0 | 33 | level = level or 0 |
| 37 | write_table(out, v, level + 1, sub_order) | 34 | write_table(out, v, level + 1, sub_order) |
| @@ -105,7 +102,7 @@ end | |||
| 105 | -- @param tbl table: the table to be written. | 102 | -- @param tbl table: the table to be written. |
| 106 | -- @param level number: the indentation level | 103 | -- @param level number: the indentation level |
| 107 | -- @param field_order table: optional prioritization table | 104 | -- @param field_order table: optional prioritization table |
| 108 | write_table = function(out: Writer, tbl: {number | string: number| string}, level: integer, field_order: SortBy<number | string>) | 105 | write_table = function(out: Writer, tbl: {number | string: number| string}, level: integer, field_order: util.SortBy<number | string>) |
| 109 | out:write("{") | 106 | out:write("{") |
| 110 | local sep = "\n" | 107 | local sep = "\n" |
| 111 | local indentation = " " | 108 | local indentation = " " |
| @@ -144,7 +141,7 @@ end | |||
| 144 | -- @param tbl table: the table to be written. | 141 | -- @param tbl table: the table to be written. |
| 145 | -- @param field_order table: optional prioritization table | 142 | -- @param field_order table: optional prioritization table |
| 146 | -- @return true if successful; nil and error message if failed. | 143 | -- @return true if successful; nil and error message if failed. |
| 147 | local function write_table_as_assignments(out: Writer, tbl: {number | string: number| string}, field_order: SortBy<number | string>): boolean, string | 144 | local function write_table_as_assignments(out: Writer, tbl: {number | string: number| string}, field_order: util.SortBy<number | string>): boolean, string |
| 148 | for k, v, sub_order in util.sortedpairs(tbl, field_order) do | 145 | for k, v, sub_order in util.sortedpairs(tbl, field_order) do |
| 149 | if not is_valid_plain_key(k) then --? tostring | 146 | if not is_valid_plain_key(k) then --? tostring |
| 150 | return nil, "cannot store '"..tostring(k).."' as a plain key." | 147 | return nil, "cannot store '"..tostring(k).."' as a plain key." |
| @@ -177,9 +174,9 @@ end | |||
| 177 | -- @param tbl table: the table containing the data to be written | 174 | -- @param tbl table: the table containing the data to be written |
| 178 | -- @param field_order table: an optional array indicating the order of top-level fields. | 175 | -- @param field_order table: an optional array indicating the order of top-level fields. |
| 179 | -- @return persisted data as string; or nil and an error message | 176 | -- @return persisted data as string; or nil and an error message |
| 180 | function persist.save_from_table_to_string(tbl: {number | string: number| string}, field_order: SortBy<number | string>): string | 177 | function persist.save_from_table_to_string(tbl: {number | string: number | string}, field_order: util.SortBy<number | string>): string, string --? optional |
| 181 | local out: Writer = {buffer = {}} --! | 178 | local out: Writer = {buffer = {}} --! |
| 182 | function out:write(data) table.insert(self.buffer, data) end | 179 | function out:write(data: string) table.insert(self.buffer, data) end |
| 183 | local ok, err = write_table_as_assignments(out, tbl, field_order) | 180 | local ok, err = write_table_as_assignments(out, tbl, field_order) |
| 184 | if not ok then | 181 | if not ok then |
| 185 | return nil, err | 182 | return nil, err |
| @@ -196,7 +193,7 @@ end | |||
| 196 | -- @param field_order table: an optional array indicating the order of top-level fields. | 193 | -- @param field_order table: an optional array indicating the order of top-level fields. |
| 197 | -- @return boolean or (nil, string): true if successful, or nil and a | 194 | -- @return boolean or (nil, string): true if successful, or nil and a |
| 198 | -- message in case of errors. | 195 | -- message in case of errors. |
| 199 | function persist.save_from_table(filename, tbl, field_order) | 196 | function persist.save_from_table(filename: string, tbl: {number | string : number | string}, field_order: util.SortBy<number | string>) |
| 200 | local prefix = dir.dir_name(filename) | 197 | local prefix = dir.dir_name(filename) |
| 201 | fs.make_dir(prefix) | 198 | fs.make_dir(prefix) |
| 202 | local out = io.open(filename, "w") | 199 | local out = io.open(filename, "w") |
diff --git a/src/luarocks/util.tl b/src/luarocks/util.tl index f1447e60..c1282eb1 100644 --- a/src/luarocks/util.tl +++ b/src/luarocks/util.tl | |||
| @@ -7,12 +7,10 @@ | |||
| 7 | local core = require("luarocks.core.util") | 7 | local core = require("luarocks.core.util") |
| 8 | local cfg = require("luarocks.core.cfg") | 8 | local cfg = require("luarocks.core.cfg") |
| 9 | 9 | ||
| 10 | local type SortBy<K> = table.SortFunction<K> | core.Ordering<K> | ||
| 11 | |||
| 12 | local record util | 10 | local record util |
| 13 | cleanup_path: function(string, string, string, boolean): string | 11 | cleanup_path: function(string, string, string, boolean): string |
| 14 | split_string: function(string, string, number): {string} | 12 | split_string: function(string, string, number): {string} |
| 15 | sortedpairs: function<K, V>(tbl: {K: V}, sort_by: SortBy<K>): function(): K, V, core.Ordering<K> | 13 | sortedpairs: function<K, V>(tbl: {K: V}, sort_by: core.SortBy<K>): function(): K, V, core.Ordering<K> |
| 16 | deep_merge: function({any : any}, {any : any}) | 14 | deep_merge: function({any : any}, {any : any}) |
| 17 | deep_merge_under: function({any : any}, {any : any}) | 15 | deep_merge_under: function({any : any}, {any : any}) |
| 18 | popen_read: function(string, ?string): string | 16 | popen_read: function(string, ?string): string |
| @@ -22,6 +20,8 @@ local record util | |||
| 22 | keys: function<K, V>({K : V}): {K} | 20 | keys: function<K, V>({K : V}): {K} |
| 23 | matchquote: function(string): string | 21 | matchquote: function(string): string |
| 24 | 22 | ||
| 23 | type SortBy = core.SortBy | ||
| 24 | |||
| 25 | record Fn | 25 | record Fn |
| 26 | fn: function(...: any) | 26 | fn: function(...: any) |
| 27 | args: table.PackTable<any> | 27 | args: table.PackTable<any> |
| @@ -145,12 +145,12 @@ end | |||
| 145 | -- @param tbl table: Table to have its string values modified. | 145 | -- @param tbl table: Table to have its string values modified. |
| 146 | -- @param vars table: Table containing string-string key-value pairs | 146 | -- @param vars table: Table containing string-string key-value pairs |
| 147 | -- representing variables to replace in the strings values of tbl. | 147 | -- representing variables to replace in the strings values of tbl. |
| 148 | function util.variable_substitutions(tbl: {string: string}, vars: {string: string}) | 148 | function util.variable_substitutions(tbl: {string: any}, vars: {string: string}) |
| 149 | 149 | ||
| 150 | local updated = {} | 150 | local updated: {string: string} = {} |
| 151 | for k, v in pairs(tbl) do | 151 | for k, v in pairs(tbl) do |
| 152 | if v is string then | 152 | if v is string then |
| 153 | updated[k] = v:gsub(var_format_pattern, vars) | 153 | updated[k] = string.gsub(v, var_format_pattern, vars) --! table 100% (there is an assert in src/luarocks/util.lua) |
| 154 | if warn_failed_matches(updated[k]) then | 154 | if warn_failed_matches(updated[k]) then |
| 155 | updated[k] = updated[k]:gsub(var_format_pattern, "") | 155 | updated[k] = updated[k]:gsub(var_format_pattern, "") |
| 156 | end | 156 | end |
| @@ -268,7 +268,7 @@ function util.see_also(text: string): string | |||
| 268 | end | 268 | end |
| 269 | 269 | ||
| 270 | function util.announce_install(rockspec: Rockspec) | 270 | function util.announce_install(rockspec: Rockspec) |
| 271 | local path = require("luarocks.core.path") --TEAL BUG? | 271 | local path = require("luarocks.path") --TEAL BUG? |
| 272 | 272 | ||
| 273 | local suffix = "" | 273 | local suffix = "" |
| 274 | if rockspec.description and rockspec.description.license then | 274 | if rockspec.description and rockspec.description.license then |
| @@ -313,7 +313,10 @@ end | |||
| 313 | --- Get default rockspec name for commands that take optional rockspec name. | 313 | --- Get default rockspec name for commands that take optional rockspec name. |
| 314 | -- @return string or (nil, string): path to the rockspec or nil and error message. | 314 | -- @return string or (nil, string): path to the rockspec or nil and error message. |
| 315 | function util.get_default_rockspec(): string, string | 315 | function util.get_default_rockspec(): string, string |
| 316 | local versions, paths, unnamed_paths = {}, {}, {} | 316 | |
| 317 | local versions: {string: string} = {} | ||
| 318 | local paths: {string: string} = {} | ||
| 319 | local unnamed_paths: {string} = {} | ||
| 317 | -- Look for rockspecs in some common locations. | 320 | -- Look for rockspecs in some common locations. |
| 318 | collect_rockspecs(versions, paths, unnamed_paths, ".") | 321 | collect_rockspecs(versions, paths, unnamed_paths, ".") |
| 319 | collect_rockspecs(versions, paths, unnamed_paths, "rockspec") | 322 | collect_rockspecs(versions, paths, unnamed_paths, "rockspec") |
| @@ -340,7 +343,7 @@ function util.get_default_rockspec(): string, string | |||
| 340 | 343 | ||
| 341 | if rock then | 344 | if rock then |
| 342 | -- If there are rockspecs for multiple rocks it's ambiguous. | 345 | -- If there are rockspecs for multiple rocks it's ambiguous. |
| 343 | if next(versions, rock) then | 346 | if next(versions, rock) ~= nil then --! why expect boolean |
| 344 | return nil, "Please specify which rockspec file to use." | 347 | return nil, "Please specify which rockspec file to use." |
| 345 | else | 348 | else |
| 346 | return paths[rock] | 349 | return paths[rock] |
| @@ -427,7 +430,7 @@ function util.lua_is_wrapper(interp: string): boolean, string | |||
| 427 | if not data then | 430 | if not data then |
| 428 | return nil, err | 431 | return nil, err |
| 429 | end | 432 | end |
| 430 | return not not data:match("LUAROCKS_SYSCONFDIR") --! not not?!?! string to true? | 433 | return not not data:match("LUAROCKS_SYSCONFDIR") --! not not ->? string to true? |
| 431 | end | 434 | end |
| 432 | 435 | ||
| 433 | do | 436 | do |
| @@ -478,14 +481,7 @@ do | |||
| 478 | do | 481 | do |
| 479 | local exe_suffix = (package.config:sub(1, 1) == "\\" and ".exe" or "") | 482 | local exe_suffix = (package.config:sub(1, 1) == "\\" and ".exe" or "") |
| 480 | 483 | ||
| 481 | local record names_record | 484 | local function insert_lua_variants(names: {string}, luaver: string) |
| 482 | names_hash: {string: string} | ||
| 483 | names_array: {string} | ||
| 484 | end | ||
| 485 | |||
| 486 | local type HashArrayRecord = names_record | ||
| 487 | |||
| 488 | local function insert_lua_variants(names: HashArrayRecord, luaver: string) --! atempt 1 bellow comented, this is atempt 2, original in the util-original file | ||
| 489 | local variants = { | 485 | local variants = { |
| 490 | "lua" .. luaver .. exe_suffix, | 486 | "lua" .. luaver .. exe_suffix, |
| 491 | "lua" .. luaver:gsub("%.", "") .. exe_suffix, | 487 | "lua" .. luaver:gsub("%.", "") .. exe_suffix, |
| @@ -493,40 +489,12 @@ do | |||
| 493 | "lua-" .. luaver:gsub("%.", "") .. exe_suffix, | 489 | "lua-" .. luaver:gsub("%.", "") .. exe_suffix, |
| 494 | } | 490 | } |
| 495 | for _, name in ipairs(variants) do | 491 | for _, name in ipairs(variants) do |
| 496 | names.names_hash[name] = luaver --! this wants indexing by string --! names is never used as a hesh | 492 | table.insert(names, name) |
| 497 | table.insert(names.names_array, name) --! this wants indexing by integer | ||
| 498 | end | 493 | end |
| 499 | end | 494 | end |
| 500 | 495 | ||
| 501 | -- local function insert_lua_variants(names: {string}, luaver: string) | ||
| 502 | -- local variants = { | ||
| 503 | -- "lua" .. luaver .. exe_suffix, | ||
| 504 | -- "lua" .. luaver:gsub("%.", "") .. exe_suffix, | ||
| 505 | -- "lua-" .. luaver .. exe_suffix, | ||
| 506 | -- "lua-" .. luaver:gsub("%.", "") .. exe_suffix, | ||
| 507 | -- } | ||
| 508 | -- local names_length = #names | ||
| 509 | -- for i, name in ipairs(variants) do | ||
| 510 | -- names[name] = luaver --! this wants indexing by string | ||
| 511 | -- names[i + names_length] = name | ||
| 512 | -- end | ||
| 513 | -- end | ||
| 514 | |||
| 515 | -- local function insert_lua_variants(names, luaver) | ||
| 516 | -- local variants = { | ||
| 517 | -- "lua" .. luaver .. exe_suffix, | ||
| 518 | -- "lua" .. luaver:gsub("%.", "") .. exe_suffix, | ||
| 519 | -- "lua-" .. luaver .. exe_suffix, | ||
| 520 | -- "lua-" .. luaver:gsub("%.", "") .. exe_suffix, | ||
| 521 | -- } | ||
| 522 | -- for _, name in ipairs(variants) do | ||
| 523 | -- names[name] = luaver | ||
| 524 | -- table.insert(names, name) | ||
| 525 | -- end | ||
| 526 | -- end | ||
| 527 | |||
| 528 | find_lua_bindir = function(prefix: string, luaver: string, verbose: string): string, string, string | 496 | find_lua_bindir = function(prefix: string, luaver: string, verbose: string): string, string, string |
| 529 | local names: HashArrayRecord = {} | 497 | local names: {string} = {} |
| 530 | if luaver then | 498 | if luaver then |
| 531 | insert_lua_variants(names, luaver) | 499 | insert_lua_variants(names, luaver) |
| 532 | else | 500 | else |
| @@ -535,14 +503,14 @@ do | |||
| 535 | end | 503 | end |
| 536 | end | 504 | end |
| 537 | if luaver == "5.1" or not luaver then | 505 | if luaver == "5.1" or not luaver then |
| 538 | table.insert(names.names_array, "luajit" .. exe_suffix) | 506 | table.insert(names, "luajit" .. exe_suffix) |
| 539 | end | 507 | end |
| 540 | table.insert(names.names_array, "lua" .. exe_suffix) | 508 | table.insert(names, "lua" .. exe_suffix) |
| 541 | 509 | ||
| 542 | local tried = {} | 510 | local tried = {} |
| 543 | local dir_sep = package.config:sub(1, 1) | 511 | local dir_sep = package.config:sub(1, 1) |
| 544 | for _, d in ipairs({ prefix .. dir_sep .. "bin", prefix }) do | 512 | for _, d in ipairs({ prefix .. dir_sep .. "bin", prefix }) do |
| 545 | for _, name in ipairs(names.names_array) do | 513 | for _, name in ipairs(names) do |
| 546 | local lua = d .. dir_sep .. name | 514 | local lua = d .. dir_sep .. name |
| 547 | local is_wrapper, err = util.lua_is_wrapper(lua) | 515 | local is_wrapper, err = util.lua_is_wrapper(lua) |
| 548 | if is_wrapper == false then | 516 | if is_wrapper == false then |
| @@ -581,16 +549,18 @@ do | |||
| 581 | end | 549 | end |
| 582 | end | 550 | end |
| 583 | 551 | ||
| 584 | function util.opts_table(type_name: string, valid_opts: {string: string}) | 552 | function util.opts_table(type_name: string, valid_opts: {string: string}): function({string : string}): {string : string} |
| 585 | local opts_mt: metatable<string> = {} --Option?? | 553 | local opts_mt: metatable<{string : string}> = { |
| 554 | -- type: function(): string --! | ||
| 555 | } | ||
| 586 | 556 | ||
| 587 | opts_mt.__index = opts_mt | 557 | opts_mt.__index = opts_mt |
| 588 | 558 | ||
| 589 | function opts_mt.type(): string | 559 | function opts_mt.type(): string --! |
| 590 | return type_name | 560 | return type_name |
| 591 | end | 561 | end |
| 592 | 562 | ||
| 593 | return function(opts: {string: string}) | 563 | return function(opts: {string: string}): {string: string} |
| 594 | for k, v in pairs(opts) do | 564 | for k, v in pairs(opts) do |
| 595 | local tv = type(v) | 565 | local tv = type(v) |
| 596 | if not valid_opts[k] then | 566 | if not valid_opts[k] then |
| @@ -618,9 +588,9 @@ end | |||
| 618 | -- @return a table with rock names as keys and versions and values, | 588 | -- @return a table with rock names as keys and versions and values, |
| 619 | -- specifying modules that are already provided by the VM (including | 589 | -- specifying modules that are already provided by the VM (including |
| 620 | -- "lua" for the Lua version and, for format 3.0+, "luajit" if detected). | 590 | -- "lua" for the Lua version and, for format 3.0+, "luajit" if detected). |
| 621 | function util.get_rocks_provided(rockspec: Rockspec): {Rockspec} | 591 | function util.get_rocks_provided(rockspec: Rockspec): {string: string} |
| 622 | 592 | ||
| 623 | if not rockspec and cfg.cache.rocks_provided then --rocks_provided: Rockspec | 593 | if not rockspec and cfg.cache.rocks_provided then |
| 624 | return cfg.cache.rocks_provided | 594 | return cfg.cache.rocks_provided |
| 625 | end | 595 | end |
| 626 | 596 | ||
