diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2010-12-14 12:12:26 -0200 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2010-12-14 12:12:26 -0200 |
commit | b2f4e356b6ede8860b22501aa4ee2578ec9a1a03 (patch) | |
tree | 65559b5e0437130fd34a6e15b7294a9bd88a14f2 | |
parent | 799736f057658d05446c722b4e157d48aff86a2e (diff) | |
download | luarocks-b2f4e356b6ede8860b22501aa4ee2578ec9a1a03.tar.gz luarocks-b2f4e356b6ede8860b22501aa4ee2578ec9a1a03.tar.bz2 luarocks-b2f4e356b6ede8860b22501aa4ee2578ec9a1a03.zip |
Fix sorting and saving of persisted manifest table.
-rw-r--r-- | src/luarocks/manif.lua | 4 | ||||
-rw-r--r-- | src/luarocks/manif_core.lua | 4 | ||||
-rw-r--r-- | src/luarocks/persist.lua | 10 | ||||
-rw-r--r-- | src/luarocks/util.lua | 16 |
4 files changed, 22 insertions, 12 deletions
diff --git a/src/luarocks/manif.lua b/src/luarocks/manif.lua index c677a22c..a7211d70 100644 --- a/src/luarocks/manif.lua +++ b/src/luarocks/manif.lua | |||
@@ -304,9 +304,9 @@ local function find_providers(file, root) | |||
304 | assert(type(file) == "string") | 304 | assert(type(file) == "string") |
305 | root = root or cfg.root_dir | 305 | root = root or cfg.root_dir |
306 | 306 | ||
307 | local manifest = manif_core.load_local_manifest(path.rocks_dir(root)) | 307 | local manifest, err = manif_core.load_local_manifest(path.rocks_dir(root)) |
308 | if not manifest then | 308 | if not manifest then |
309 | return nil, "manifest file is missing. Corrupted local rocks tree?" | 309 | return nil, err .. " -- corrupted local rocks tree?" |
310 | end | 310 | end |
311 | local deploy_bin = path.deploy_bin_dir(root) | 311 | local deploy_bin = path.deploy_bin_dir(root) |
312 | local deploy_lua = path.deploy_lua_dir(root) | 312 | local deploy_lua = path.deploy_lua_dir(root) |
diff --git a/src/luarocks/manif_core.lua b/src/luarocks/manif_core.lua index d1eb4ebb..2e1a9518 100644 --- a/src/luarocks/manif_core.lua +++ b/src/luarocks/manif_core.lua | |||
@@ -16,9 +16,9 @@ manifest_cache = {} | |||
16 | -- @param file string: The local filename of the manifest file. | 16 | -- @param file string: The local filename of the manifest file. |
17 | -- @param repo_url string: The repository identifier. | 17 | -- @param repo_url string: The repository identifier. |
18 | function manifest_loader(file, repo_url, quick) | 18 | function manifest_loader(file, repo_url, quick) |
19 | local manifest = persist.load_into_table(file) | 19 | local manifest, err = persist.load_into_table(file) |
20 | if not manifest then | 20 | if not manifest then |
21 | return nil, "Failed loading manifest for "..repo_url | 21 | return nil, "Failed loading manifest for "..repo_url..": "..err |
22 | end | 22 | end |
23 | if not quick then | 23 | if not quick then |
24 | local ok, err = type_check.type_check_manifest(manifest) | 24 | local ok, err = type_check.type_check_manifest(manifest) |
diff --git a/src/luarocks/persist.lua b/src/luarocks/persist.lua index d74a805e..c809b51c 100644 --- a/src/luarocks/persist.lua +++ b/src/luarocks/persist.lua | |||
@@ -28,10 +28,6 @@ function load_into_table(filename, tbl) | |||
28 | return result | 28 | return result |
29 | end | 29 | end |
30 | 30 | ||
31 | local function string_sort(a,b) | ||
32 | return tostring(a) < tostring(b) | ||
33 | end | ||
34 | |||
35 | --- Write a table as Lua code representing a table to disk | 31 | --- Write a table as Lua code representing a table to disk |
36 | -- (that is, in curly brackets notation). | 32 | -- (that is, in curly brackets notation). |
37 | -- This function handles only numbers, strings and tables | 33 | -- This function handles only numbers, strings and tables |
@@ -43,7 +39,7 @@ local function write_table(out, tbl, level) | |||
43 | local sep = "\n" | 39 | local sep = "\n" |
44 | local indent = true | 40 | local indent = true |
45 | local i = 1 | 41 | local i = 1 |
46 | for k, v in util.sortedpairs(tbl, string_sort) do | 42 | for k, v in util.sortedpairs(tbl) do |
47 | out:write(sep) | 43 | out:write(sep) |
48 | if indent then | 44 | if indent then |
49 | for n = 1,level do out:write(" ") end | 45 | for n = 1,level do out:write(" ") end |
@@ -52,7 +48,7 @@ local function write_table(out, tbl, level) | |||
52 | indent = true | 48 | indent = true |
53 | if type(k) == "number" then | 49 | if type(k) == "number" then |
54 | if k ~= i then | 50 | if k ~= i then |
55 | out:write(tostring(k).."=") | 51 | out:write('['..tostring(k).."]=") |
56 | else | 52 | else |
57 | i = i + 1 | 53 | i = i + 1 |
58 | end | 54 | end |
@@ -95,7 +91,7 @@ function save_from_table(filename, tbl) | |||
95 | if not out then | 91 | if not out then |
96 | return nil, "Cannot create file at "..filename | 92 | return nil, "Cannot create file at "..filename |
97 | end | 93 | end |
98 | for k, v in util.sortedpairs(tbl, string_sort) do | 94 | for k, v in util.sortedpairs(tbl) do |
99 | out:write(k.." = ") | 95 | out:write(k.." = ") |
100 | write_table(out, v, 1) | 96 | write_table(out, v, 1) |
101 | out:write("\n") | 97 | out:write("\n") |
diff --git a/src/luarocks/util.lua b/src/luarocks/util.lua index 10fc1e36..e0c01421 100644 --- a/src/luarocks/util.lua +++ b/src/luarocks/util.lua | |||
@@ -216,6 +216,20 @@ function keys(tbl) | |||
216 | return ks | 216 | return ks |
217 | end | 217 | end |
218 | 218 | ||
219 | local function default_sort(a, b) | ||
220 | local ta = type(a) | ||
221 | local tb = type(b) | ||
222 | if ta == "number" and tb == "number" then | ||
223 | return a < b | ||
224 | elseif ta == "number" then | ||
225 | return true | ||
226 | elseif tb == "number" then | ||
227 | return false | ||
228 | else | ||
229 | return tostring(a) < tostring(b) | ||
230 | end | ||
231 | end | ||
232 | |||
219 | -- The iterator function used internally by util.sortedpairs. | 233 | -- The iterator function used internally by util.sortedpairs. |
220 | -- @param tbl table: The table to be iterated. | 234 | -- @param tbl table: The table to be iterated. |
221 | -- @param sort_function function or nil: An optional comparison function | 235 | -- @param sort_function function or nil: An optional comparison function |
@@ -223,7 +237,7 @@ end | |||
223 | -- @see sortedpairs | 237 | -- @see sortedpairs |
224 | local function sortedpairs_iterator(tbl, sort_function) | 238 | local function sortedpairs_iterator(tbl, sort_function) |
225 | local ks = keys(tbl) | 239 | local ks = keys(tbl) |
226 | table.sort(ks, sort_function) | 240 | table.sort(ks, sort_function or default_sort) |
227 | for _, k in ipairs(ks) do | 241 | for _, k in ipairs(ks) do |
228 | coroutine.yield(k, tbl[k]) | 242 | coroutine.yield(k, tbl[k]) |
229 | end | 243 | end |