From 8a2516cd3f7a0145098bd13de646f7984a76269d Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Sun, 22 Jul 2018 22:42:16 -0300 Subject: fs: make zip/unzip/gunzip/bunzip2 respect `nil,err` protocol See #850. --- src/luarocks/fs/unix/tools.lua | 22 +++++++++++++++++----- src/luarocks/fs/win32/tools.lua | 20 ++++++++++++++------ 2 files changed, 31 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/luarocks/fs/unix/tools.lua b/src/luarocks/fs/unix/tools.lua index ca7dc6ad..e6be9266 100644 --- a/src/luarocks/fs/unix/tools.lua +++ b/src/luarocks/fs/unix/tools.lua @@ -123,17 +123,25 @@ end -- @param zipfile string: pathname of .zip archive to be created. -- @param ... Filenames to be stored in the archive are given as -- additional arguments. --- @return boolean: true on success, false on failure. +-- @return boolean: true on success, nil and error message on failure. function tools.zip(zipfile, ...) - return fs.execute(vars.ZIP.." -r", zipfile, ...) + if fs.execute_quiet(vars.ZIP.." -r", zipfile, ...) then + return true + else + return nil, "failed compressing " .. zipfile + end end --- Uncompress files from a .zip archive. -- @param zipfile string: pathname of .zip archive to be extracted. --- @return boolean: true on success, false on failure. +-- @return boolean: true on success, nil and error message on failure. function tools.unzip(zipfile) assert(zipfile) - return fs.execute_quiet(vars.UNZIP, zipfile) + if fs.execute_quiet(vars.UNZIP, zipfile) then + return true + else + return nil, "failed extracting " .. zipfile + end end local function uncompress(default_ext, program, infile, outfile) @@ -142,7 +150,11 @@ local function uncompress(default_ext, program, infile, outfile) if not outfile then outfile = infile:gsub("%."..default_ext.."$", "") end - return fs.execute(fs.Q(program).." -c "..fs.Q(infile).." > "..fs.Q(outfile)) + if fs.execute(fs.Q(program).." -c "..fs.Q(infile).." > "..fs.Q(outfile)) then + return true + else + return nil, "failed extracting " .. infile + end end --- Uncompresses a .gz file. diff --git a/src/luarocks/fs/win32/tools.lua b/src/luarocks/fs/win32/tools.lua index f5e2ea2e..7e0d10f4 100644 --- a/src/luarocks/fs/win32/tools.lua +++ b/src/luarocks/fs/win32/tools.lua @@ -135,17 +135,25 @@ end -- @param zipfile string: pathname of .zip archive to be created. -- @param ... Filenames to be stored in the archive are given as -- additional arguments. --- @return boolean: true on success, false on failure. +-- @return boolean: true on success, nil and error message on failure. function tools.zip(zipfile, ...) - return fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa a -tzip", zipfile, ...) + if fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa a -tzip", zipfile, ...) then + return true + else + return nil, "failed compressing " .. zipfile + end end --- Uncompress files from a .zip archive. -- @param zipfile string: pathname of .zip archive to be extracted. --- @return boolean: true on success, false on failure. +-- @return boolean: true on success, nil and error message on failure. function tools.unzip(zipfile) assert(zipfile) - return fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa x", zipfile) + if fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa x", zipfile) then + return true + else + return nil, "failed extracting " .. zipfile + end end local function sevenz(default_ext, infile, outfile) @@ -160,7 +168,7 @@ local function sevenz(default_ext, infile, outfile) local cmdline = fs.Q(vars.SEVENZ).." -aoa -t* -o"..fs.Q(outdir).." x "..fs.Q(infile) local ok, err = fs.execute_quiet(cmdline) if not ok then - return nil, err + return nil, "failed extracting " .. infile end if outfile then @@ -168,7 +176,7 @@ local function sevenz(default_ext, infile, outfile) dropext = fs.absolute_name(dropext) ok, err = os.rename(dropext, outfile) if not ok then - return nil, err + return nil, "failed creating new file " .. outfile end end -- cgit v1.2.3-55-g6feb