aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/deplocks.tl (renamed from src/luarocks/deplocks.lua)43
1 files changed, 24 insertions, 19 deletions
diff --git a/src/luarocks/deplocks.lua b/src/luarocks/deplocks.tl
index d62908f4..37c0c700 100644
--- a/src/luarocks/deplocks.lua
+++ b/src/luarocks/deplocks.tl
@@ -5,12 +5,14 @@ local dir = require("luarocks.dir")
5local util = require("luarocks.util") 5local util = require("luarocks.util")
6local persist = require("luarocks.persist") 6local persist = require("luarocks.persist")
7 7
8local deptable = {} 8local type PersistableTable = require("luarocks.core.types.persist").PersistableTable
9
10local deptable: PersistableTable = {}
9local deptable_mode = "start" 11local deptable_mode = "start"
10local deplock_abs_filename 12local deplock_abs_filename: string
11local deplock_root_rock_name 13local deplock_root_rock_name: string
12 14
13function deplocks.init(root_rock_name, dirname) 15function deplocks.init(root_rock_name: string, dirname: string)
14 if deptable_mode ~= "start" then 16 if deptable_mode ~= "start" then
15 return 17 return
16 end 18 end
@@ -23,20 +25,20 @@ function deplocks.init(root_rock_name, dirname)
23 deptable = {} 25 deptable = {}
24end 26end
25 27
26function deplocks.get_abs_filename(root_rock_name) 28function deplocks.get_abs_filename(root_rock_name: string): string
27 if root_rock_name == deplock_root_rock_name then 29 if root_rock_name == deplock_root_rock_name then
28 return deplock_abs_filename 30 return deplock_abs_filename
29 end 31 end
30end 32end
31 33
32function deplocks.load(root_rock_name, dirname) 34function deplocks.load(root_rock_name: string, dirname: string): boolean, string, string
33 if deptable_mode ~= "start" then 35 if deptable_mode ~= "start" then
34 return true, nil 36 return true, nil
35 end 37 end
36 deptable_mode = "locked" 38 deptable_mode = "locked"
37 39
38 local filename = dir.path(dirname, "luarocks.lock") 40 local filename = dir.path(dirname, "luarocks.lock")
39 local ok, result, errcode = persist.run_file(filename, {}) 41 local _, result, errcode = persist.run_file(filename, {})
40 if errcode == "load" or errcode == "run" then 42 if errcode == "load" or errcode == "run" then
41 -- bad config file or depends on env, so error out 43 -- bad config file or depends on env, so error out
42 return nil, nil, "Could not read existing lockfile " .. filename 44 return nil, nil, "Could not read existing lockfile " .. filename
@@ -50,11 +52,11 @@ function deplocks.load(root_rock_name, dirname)
50 deplock_abs_filename = fs.absolute_name(filename) 52 deplock_abs_filename = fs.absolute_name(filename)
51 deplock_root_rock_name = root_rock_name 53 deplock_root_rock_name = root_rock_name
52 54
53 deptable = result 55 deptable = result as PersistableTable --! cast
54 return true, filename 56 return true, filename
55end 57end
56 58
57function deplocks.add(depskey, name, version) 59function deplocks.add(depskey: string, name: string, version: string)
58 if deptable_mode == "locked" then 60 if deptable_mode == "locked" then
59 return 61 return
60 end 62 end
@@ -65,21 +67,24 @@ function deplocks.add(depskey, name, version)
65 deptable[depskey] = dk 67 deptable[depskey] = dk
66 end 68 end
67 69
68 if not dk[name] then 70 if dk is PersistableTable and not dk[name] then
69 dk[name] = version 71 dk[name] = version
70 end 72 end
71end 73end
72 74
73function deplocks.get(depskey, name) 75function deplocks.get(depskey: string, name: string): string | number | boolean | PersistableTable
74 local dk = deptable[depskey] 76 local dk = deptable[depskey]
75 if not dk then 77 if not dk then
76 return nil 78 return nil
77 end 79 end
78 80 if dk is PersistableTable then
79 return deptable[name] 81 return dk[name]
82 else
83 return dk
84 end
80end 85end
81 86
82function deplocks.write_file() 87function deplocks.write_file(): boolean, string
83 if deptable_mode ~= "create" then 88 if deptable_mode ~= "create" then
84 return true 89 return true
85 end 90 end
@@ -88,19 +93,19 @@ function deplocks.write_file()
88end 93end
89 94
90-- a table-like interface to deplocks 95-- a table-like interface to deplocks
91function deplocks.proxy(depskey) 96function deplocks.proxy(depskey: string): PersistableTable
92 return setmetatable({}, { 97 return setmetatable({}, {
93 __index = function(_, k) 98 __index = function(_, k: string): string | number | boolean | PersistableTable
94 return deplocks.get(depskey, k) 99 return deplocks.get(depskey, k)
95 end, 100 end,
96 __newindex = function(_, k, v) 101 __newindex = function(_, k: string, v: string)
97 return deplocks.add(depskey, k, v) 102 return deplocks.add(depskey, k, v)
98 end, 103 end,
99 }) 104 })
100end 105end
101 106
102function deplocks.each(depskey) 107function deplocks.each(depskey: string): function(): string | number, string | number | boolean | PersistableTable
103 return util.sortedpairs(deptable[depskey] or {}) 108 return util.sortedpairs(deptable[depskey] as PersistableTable or {})
104end 109end
105 110
106return deplocks 111return deplocks