diff options
| author | Hisham Muhammad <hisham@gobolinux.org> | 2010-12-05 13:57:46 -0200 |
|---|---|---|
| committer | Hisham Muhammad <hisham@gobolinux.org> | 2010-12-05 13:57:46 -0200 |
| commit | a90a0d3ec2783df75343d366d4b52e586b42f6e6 (patch) | |
| tree | 8a4916ab31580d6e5e7e2d842a52346064b4c5f9 | |
| parent | b113a72b63d494828bb6b28833cc53de21b02aeb (diff) | |
| download | luarocks-a90a0d3ec2783df75343d366d4b52e586b42f6e6.tar.gz luarocks-a90a0d3ec2783df75343d366d4b52e586b42f6e6.tar.bz2 luarocks-a90a0d3ec2783df75343d366d4b52e586b42f6e6.zip | |
Make sorting for manifest table stable.
| -rw-r--r-- | src/luarocks/persist.lua | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/luarocks/persist.lua b/src/luarocks/persist.lua index 70a89b8d..d74a805e 100644 --- a/src/luarocks/persist.lua +++ b/src/luarocks/persist.lua | |||
| @@ -5,6 +5,8 @@ | |||
| 5 | -- as it is used in the bootstrapping stage of the cfg module. | 5 | -- as it is used in the bootstrapping stage of the cfg module. |
| 6 | module("luarocks.persist", package.seeall) | 6 | module("luarocks.persist", package.seeall) |
| 7 | 7 | ||
| 8 | local util = require("luarocks.util") | ||
| 9 | |||
| 8 | --- Load a Lua file containing assignments, storing them in a table. | 10 | --- Load a Lua file containing assignments, storing them in a table. |
| 9 | -- The global environment is not propagated to the loaded file. | 11 | -- The global environment is not propagated to the loaded file. |
| 10 | -- @param filename string: the name of the file. | 12 | -- @param filename string: the name of the file. |
| @@ -26,6 +28,10 @@ function load_into_table(filename, tbl) | |||
| 26 | return result | 28 | return result |
| 27 | end | 29 | end |
| 28 | 30 | ||
| 31 | local function string_sort(a,b) | ||
| 32 | return tostring(a) < tostring(b) | ||
| 33 | end | ||
| 34 | |||
| 29 | --- Write a table as Lua code representing a table to disk | 35 | --- Write a table as Lua code representing a table to disk |
| 30 | -- (that is, in curly brackets notation). | 36 | -- (that is, in curly brackets notation). |
| 31 | -- This function handles only numbers, strings and tables | 37 | -- This function handles only numbers, strings and tables |
| @@ -37,7 +43,7 @@ local function write_table(out, tbl, level) | |||
| 37 | local sep = "\n" | 43 | local sep = "\n" |
| 38 | local indent = true | 44 | local indent = true |
| 39 | local i = 1 | 45 | local i = 1 |
| 40 | for k, v in pairs(tbl) do | 46 | for k, v in util.sortedpairs(tbl, string_sort) do |
| 41 | out:write(sep) | 47 | out:write(sep) |
| 42 | if indent then | 48 | if indent then |
| 43 | for n = 1,level do out:write(" ") end | 49 | for n = 1,level do out:write(" ") end |
| @@ -89,7 +95,7 @@ function save_from_table(filename, tbl) | |||
| 89 | if not out then | 95 | if not out then |
| 90 | return nil, "Cannot create file at "..filename | 96 | return nil, "Cannot create file at "..filename |
| 91 | end | 97 | end |
| 92 | for k, v in pairs(tbl) do | 98 | for k, v in util.sortedpairs(tbl, string_sort) do |
| 93 | out:write(k.." = ") | 99 | out:write(k.." = ") |
| 94 | write_table(out, v, 1) | 100 | write_table(out, v, 1) |
| 95 | out:write("\n") | 101 | out:write("\n") |
