diff options
author | Peter Melnichenko <mpeterval@gmail.com> | 2016-10-28 17:24:01 +0300 |
---|---|---|
committer | Peter Melnichenko <mpeterval@gmail.com> | 2016-10-28 22:38:19 +0300 |
commit | 0574fb3c6d015b80c1f0330e2bf5a630c5ec306a (patch) | |
tree | aba6b57415049d9187e84ffd449013c3826b2215 /src | |
parent | 650755f9b82b678ebb1f14242e5249c5f9e6c36f (diff) | |
download | luarocks-0574fb3c6d015b80c1f0330e2bf5a630c5ec306a.tar.gz luarocks-0574fb3c6d015b80c1f0330e2bf5a630c5ec306a.tar.bz2 luarocks-0574fb3c6d015b80c1f0330e2bf5a630c5ec306a.zip |
Refactor store_results in luarocks.manif
Instead of passing a function and its arguments to a helper
function for it to call it, make a copy of result, and return it,
call the function on the outer level and pass the result to helper.
Diffstat (limited to 'src')
-rw-r--r-- | src/luarocks/manif.lua | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/src/luarocks/manif.lua b/src/luarocks/manif.lua index 2d983a85..15a27c48 100644 --- a/src/luarocks/manif.lua +++ b/src/luarocks/manif.lua | |||
@@ -161,31 +161,28 @@ function manif.load_manifest(repo_url, lua_version) | |||
161 | return manif_core.manifest_loader(pathname, repo_url, lua_version) | 161 | return manif_core.manifest_loader(pathname, repo_url, lua_version) |
162 | end | 162 | end |
163 | 163 | ||
164 | --- Output a table listing items of a package. | 164 | --- Update storage table to account for items provided by a package. |
165 | -- @param itemsfn function: a function for obtaining items of a package. | 165 | -- @param storage table: a table storing items in the following format: |
166 | -- pkg and version will be passed to it; it should return a table with | 166 | -- keys are item names and values are arrays of packages providing each item, |
167 | -- items as keys. | 167 | -- where a package is specified as string `name/version`. |
168 | -- @param pkg string: package name | 168 | -- @param items table: a table mapping item names to paths. |
169 | -- @param version string: package version | 169 | -- @param name string: package name. |
170 | -- @param tbl table: the package matching table: keys should be item names | 170 | -- @param version string: package version. |
171 | -- and values arrays of strings with packages names in "name/version" format. | 171 | local function store_package_items(storage, name, version, items) |
172 | local function store_package_items(itemsfn, pkg, version, tbl) | 172 | assert(type(storage) == "table") |
173 | assert(type(itemsfn) == "function") | 173 | assert(type(items) == "table") |
174 | assert(type(pkg) == "string") | 174 | assert(type(name) == "string") |
175 | assert(type(version) == "string") | 175 | assert(type(version) == "string") |
176 | assert(type(tbl) == "table") | ||
177 | 176 | ||
178 | local pkg_version = pkg.."/"..version | 177 | local package_identifier = name.."/"..version |
179 | local result = {} | ||
180 | 178 | ||
181 | for item, path in pairs(itemsfn(pkg, version)) do | 179 | for item_name, path in pairs(items) do |
182 | result[item] = path | 180 | if not storage[item_name] then |
183 | if not tbl[item] then | 181 | storage[item_name] = {} |
184 | tbl[item] = {} | ||
185 | end | 182 | end |
186 | table.insert(tbl[item], pkg_version) | 183 | |
184 | table.insert(storage[item_name], package_identifier) | ||
187 | end | 185 | end |
188 | return result | ||
189 | end | 186 | end |
190 | 187 | ||
191 | --- Sort function for ordering rock identifiers in a manifest's | 188 | --- Sort function for ordering rock identifiers in a manifest's |
@@ -340,8 +337,11 @@ local function store_results(results, manifest, dep_handler) | |||
340 | if not rock_manifest then | 337 | if not rock_manifest then |
341 | return nil, "rock_manifest file not found for "..name.." "..version.." - not a LuaRocks 2 tree?" | 338 | return nil, "rock_manifest file not found for "..name.." "..version.." - not a LuaRocks 2 tree?" |
342 | end | 339 | end |
343 | entrytable.modules = store_package_items(repos.package_modules, name, version, manifest.modules) | 340 | |
344 | entrytable.commands = store_package_items(repos.package_commands, name, version, manifest.commands) | 341 | entrytable.modules = repos.package_modules(name, version) |
342 | store_package_items(manifest.modules, name, version, entrytable.modules) | ||
343 | entrytable.commands = repos.package_commands(name, version) | ||
344 | store_package_items(manifest.commands, name, version, entrytable.commands) | ||
345 | end | 345 | end |
346 | table.insert(versiontable, entrytable) | 346 | table.insert(versiontable, entrytable) |
347 | end | 347 | end |