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 | ea6bfdb0c4c99bce09b1c0ea0361ac9864f4f1f3 (patch) | |
| tree | eaf76230bbbd09dd68e5f8c37a48c6f7ca937dad /src | |
| parent | db62bad5a02e3dd8b44b81aae0384e632672eee1 (diff) | |
| download | luarocks-ea6bfdb0c4c99bce09b1c0ea0361ac9864f4f1f3.tar.gz luarocks-ea6bfdb0c4c99bce09b1c0ea0361ac9864f4f1f3.tar.bz2 luarocks-ea6bfdb0c4c99bce09b1c0ea0361ac9864f4f1f3.zip | |
Teal: convert luarocks.core.persist
Diffstat (limited to 'src')
| -rw-r--r-- | src/luarocks/core/persist.tl (renamed from src/luarocks/core/persist.lua) | 44 |
1 files changed, 17 insertions, 27 deletions
diff --git a/src/luarocks/core/persist.lua b/src/luarocks/core/persist.tl index 57e7b5d4..89cac97e 100644 --- a/src/luarocks/core/persist.lua +++ b/src/luarocks/core/persist.tl | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | 1 | ||
| 2 | local persist = {} | 2 | local record persist |
| 3 | end | ||
| 3 | 4 | ||
| 4 | local require = nil | ||
| 5 | -------------------------------------------------------------------------------- | 5 | -------------------------------------------------------------------------------- |
| 6 | 6 | ||
| 7 | --- Load and run a Lua file in an environment. | 7 | --- Load and run a Lua file in an environment. |
| @@ -10,35 +10,27 @@ local require = nil | |||
| 10 | -- @return (true, any) or (nil, string, string): true and the return value | 10 | -- @return (true, any) or (nil, string, string): true and the return value |
| 11 | -- of the file, or nil, an error message and an error code ("open", "load" | 11 | -- of the file, or nil, an error message and an error code ("open", "load" |
| 12 | -- or "run") in case of errors. | 12 | -- or "run") in case of errors. |
| 13 | function persist.run_file(filename, env) | 13 | function persist.run_file(filename: string, env: {string:any}): boolean, any | string, string |
| 14 | local fd, err = io.open(filename) | 14 | local fd, open_err: FILE, any = io.open(filename) |
| 15 | if not fd then | 15 | if not fd then |
| 16 | return nil, err, "open" | 16 | return nil, open_err, "open" |
| 17 | end | 17 | end |
| 18 | local str, err = fd:read("*a") | 18 | local str, read_err: string, string = fd:read("*a") |
| 19 | fd:close() | 19 | fd:close() |
| 20 | if not str then | 20 | if not str then |
| 21 | return nil, err, "open" | 21 | return nil, read_err, "open" |
| 22 | end | 22 | end |
| 23 | str = str:gsub("^#![^\n]*\n", "") | 23 | str = str:gsub("^#![^\n]*\n", "") |
| 24 | local chunk, ran | 24 | local chunk, ran, err: function(...: any):(any), boolean, any |
| 25 | if _VERSION == "Lua 5.1" then -- Lua 5.1 | 25 | chunk, err = load(str, filename, "t", env) |
| 26 | chunk, err = loadstring(str, filename) | 26 | if chunk then |
| 27 | if chunk then | 27 | ran, err = pcall(chunk) |
| 28 | setfenv(chunk, env) | ||
| 29 | ran, err = pcall(chunk) | ||
| 30 | end | ||
| 31 | else -- Lua 5.2 | ||
| 32 | chunk, err = load(str, filename, "t", env) | ||
| 33 | if chunk then | ||
| 34 | ran, err = pcall(chunk) | ||
| 35 | end | ||
| 36 | end | 28 | end |
| 37 | if not chunk then | 29 | if not chunk then |
| 38 | return nil, "Error loading file: "..err, "load" | 30 | return nil, "Error loading file: "..tostring(err), "load" |
| 39 | end | 31 | end |
| 40 | if not ran then | 32 | if not ran then |
| 41 | return nil, "Error running file: "..err, "run" | 33 | return nil, "Error running file: "..tostring(err), "run" |
| 42 | end | 34 | end |
| 43 | return true, err | 35 | return true, err |
| 44 | end | 36 | end |
| @@ -53,14 +45,12 @@ end | |||
| 53 | -- or nil, an error message and an error code ("open"; couldn't open the file, | 45 | -- or nil, an error message and an error code ("open"; couldn't open the file, |
| 54 | -- "load"; compile-time error, or "run"; run-time error) | 46 | -- "load"; compile-time error, or "run"; run-time error) |
| 55 | -- in case of errors. | 47 | -- in case of errors. |
| 56 | function persist.load_into_table(filename, tbl) | 48 | function persist.load_into_table(filename: string, tbl?: {string:any}) : {any: any}, {any: any} | string, string |
| 57 | assert(type(filename) == "string") | ||
| 58 | assert(type(tbl) == "table" or not tbl) | ||
| 59 | 49 | ||
| 60 | local result = tbl or {} | 50 | local result: {string:any} = tbl or {} |
| 61 | local globals = {} | 51 | local globals = {} |
| 62 | local globals_mt = { | 52 | local globals_mt = { |
| 63 | __index = function(t, k) | 53 | __index = function(_, k: string) |
| 64 | globals[k] = true | 54 | globals[k] = true |
| 65 | end | 55 | end |
| 66 | } | 56 | } |
| @@ -72,7 +62,7 @@ function persist.load_into_table(filename, tbl) | |||
| 72 | setmetatable(result, save_mt) | 62 | setmetatable(result, save_mt) |
| 73 | 63 | ||
| 74 | if not ok then | 64 | if not ok then |
| 75 | return nil, err, errcode | 65 | return nil, tostring(err), errcode |
| 76 | end | 66 | end |
| 77 | return result, globals | 67 | return result, globals |
| 78 | end | 68 | end |
