From 1138929e64fb9d891cea370552b99bb44b31e23a Mon Sep 17 00:00:00 2001 From: Peter Melnichenko Date: Wed, 22 Jun 2016 20:19:57 +0300 Subject: Handle unpack_archive errors In particular, when installing a rock, fail with a message related to extraction error or unrecognized archive extension instead of 'Directory not found inside archive .'. --- src/luarocks/fetch.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/luarocks/fetch.lua b/src/luarocks/fetch.lua index dfa6f191..824a3731 100644 --- a/src/luarocks/fetch.lua +++ b/src/luarocks/fetch.lua @@ -344,7 +344,8 @@ function fetch.get_sources(rockspec, extract, dest_dir) if extract then local ok, err = fs.change_dir(store_dir) if not ok then return nil, err end - fs.unpack_archive(rockspec.source.file) + ok, err = fs.unpack_archive(rockspec.source.file) + if not ok then return nil, err end if not fs.exists(rockspec.source.dir) then return nil, "Directory "..rockspec.source.dir.." not found inside archive "..rockspec.source.file, "source.dir", source_file, store_dir end -- cgit v1.2.3-55-g6feb From 998fe0b16920f5c8316dadf7d247588a23c36b29 Mon Sep 17 00:00:00 2001 From: Peter Melnichenko Date: Wed, 22 Jun 2016 20:29:13 +0300 Subject: Mention failed action on invalid archive extension Return `Couldn't extract archive : unrecognized filename extension` instead of `Unrecognized extension `, so that it's clear that the file is being interpreted as an archive. --- src/luarocks/fs/unix/tools.lua | 3 +-- src/luarocks/fs/win32/tools.lua | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/luarocks/fs/unix/tools.lua b/src/luarocks/fs/unix/tools.lua index 7a67fb22..d0802725 100644 --- a/src/luarocks/fs/unix/tools.lua +++ b/src/luarocks/fs/unix/tools.lua @@ -192,8 +192,7 @@ function tools.unpack_archive(archive) -- Ignore .lua and .c files; they don't need to be extracted. return true else - local ext = archive:match(".*(%..*)") - return false, "Unrecognized filename extension "..(ext or "") + return false, "Couldn't extract archive "..archive..": unrecognized filename extension" end if not ok then return false, "Failed extracting "..archive diff --git a/src/luarocks/fs/win32/tools.lua b/src/luarocks/fs/win32/tools.lua index 1d47fa59..4adc78d1 100644 --- a/src/luarocks/fs/win32/tools.lua +++ b/src/luarocks/fs/win32/tools.lua @@ -204,8 +204,7 @@ function tools.unpack_archive(archive) -- Ignore .lua and .c files; they don't need to be extracted. return true else - local ext = archive:match(".*(%..*)") - return false, "Unrecognized filename extension "..(ext or "") + return false, "Couldn't extract archive "..archive..": unrecognized filename extension" end if not ok then return false, "Failed extracting "..archive -- cgit v1.2.3-55-g6feb