diff options
-rw-r--r-- | src/luarocks/manif.lua | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/luarocks/manif.lua b/src/luarocks/manif.lua index e30c2a33..48b4f23d 100644 --- a/src/luarocks/manif.lua +++ b/src/luarocks/manif.lua | |||
@@ -464,6 +464,11 @@ function manif.zip_manifests() | |||
464 | end | 464 | end |
465 | end | 465 | end |
466 | 466 | ||
467 | local function relative_path(from_dir, to_file) | ||
468 | -- It is assumed that `from_dir` is prefix of `to_file`. | ||
469 | return (to_file:sub(#from_dir + 1):gsub("^[\\/]*", "")) | ||
470 | end | ||
471 | |||
467 | local function find_providers(file, root) | 472 | local function find_providers(file, root) |
468 | assert(type(file) == "string") | 473 | assert(type(file) == "string") |
469 | root = root or cfg.root_dir | 474 | root = root or cfg.root_dir |
@@ -479,13 +484,13 @@ local function find_providers(file, root) | |||
479 | 484 | ||
480 | if util.starts_with(file, deploy_lua) then | 485 | if util.starts_with(file, deploy_lua) then |
481 | manifest_tbl = manifest.modules | 486 | manifest_tbl = manifest.modules |
482 | key = path.path_to_module(file:sub(#deploy_lua+1):gsub("\\", "/")) | 487 | key = path.path_to_module(relative_path(deploy_lua, file):gsub("\\", "/")) |
483 | elseif util.starts_with(file, deploy_lib) then | 488 | elseif util.starts_with(file, deploy_lib) then |
484 | manifest_tbl = manifest.modules | 489 | manifest_tbl = manifest.modules |
485 | key = path.path_to_module(file:sub(#deploy_lib+1):gsub("\\", "/")) | 490 | key = path.path_to_module(relative_path(deploy_lib, file):gsub("\\", "/")) |
486 | elseif util.starts_with(file, deploy_bin) then | 491 | elseif util.starts_with(file, deploy_bin) then |
487 | manifest_tbl = manifest.commands | 492 | manifest_tbl = manifest.commands |
488 | key = file:sub(#deploy_bin+1):gsub("^[\\/]*", "") | 493 | key = relative_path(deploy_bin, file) |
489 | else | 494 | else |
490 | assert(false, "Assertion failed: '"..file.."' is not a deployed file.") | 495 | assert(false, "Assertion failed: '"..file.."' is not a deployed file.") |
491 | end | 496 | end |