diff options
| author | Hisham Muhammad <hisham@gobolinux.org> | 2018-07-22 22:42:16 -0300 |
|---|---|---|
| committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-07-23 08:19:21 -0300 |
| commit | 8a2516cd3f7a0145098bd13de646f7984a76269d (patch) | |
| tree | 09b4da202ca5c365f5f07b014e14d7d40424b994 | |
| parent | c212c884ff4be5d97d675e2390c6db47e18d6f8d (diff) | |
| download | luarocks-8a2516cd3f7a0145098bd13de646f7984a76269d.tar.gz luarocks-8a2516cd3f7a0145098bd13de646f7984a76269d.tar.bz2 luarocks-8a2516cd3f7a0145098bd13de646f7984a76269d.zip | |
fs: make zip/unzip/gunzip/bunzip2 respect `nil,err` protocol
See #850.
| -rw-r--r-- | src/luarocks/fs/unix/tools.lua | 22 | ||||
| -rw-r--r-- | src/luarocks/fs/win32/tools.lua | 20 |
2 files changed, 31 insertions, 11 deletions
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 | |||
| 123 | -- @param zipfile string: pathname of .zip archive to be created. | 123 | -- @param zipfile string: pathname of .zip archive to be created. |
| 124 | -- @param ... Filenames to be stored in the archive are given as | 124 | -- @param ... Filenames to be stored in the archive are given as |
| 125 | -- additional arguments. | 125 | -- additional arguments. |
| 126 | -- @return boolean: true on success, false on failure. | 126 | -- @return boolean: true on success, nil and error message on failure. |
| 127 | function tools.zip(zipfile, ...) | 127 | function tools.zip(zipfile, ...) |
| 128 | return fs.execute(vars.ZIP.." -r", zipfile, ...) | 128 | if fs.execute_quiet(vars.ZIP.." -r", zipfile, ...) then |
| 129 | return true | ||
| 130 | else | ||
| 131 | return nil, "failed compressing " .. zipfile | ||
| 132 | end | ||
| 129 | end | 133 | end |
| 130 | 134 | ||
| 131 | --- Uncompress files from a .zip archive. | 135 | --- Uncompress files from a .zip archive. |
| 132 | -- @param zipfile string: pathname of .zip archive to be extracted. | 136 | -- @param zipfile string: pathname of .zip archive to be extracted. |
| 133 | -- @return boolean: true on success, false on failure. | 137 | -- @return boolean: true on success, nil and error message on failure. |
| 134 | function tools.unzip(zipfile) | 138 | function tools.unzip(zipfile) |
| 135 | assert(zipfile) | 139 | assert(zipfile) |
| 136 | return fs.execute_quiet(vars.UNZIP, zipfile) | 140 | if fs.execute_quiet(vars.UNZIP, zipfile) then |
| 141 | return true | ||
| 142 | else | ||
| 143 | return nil, "failed extracting " .. zipfile | ||
| 144 | end | ||
| 137 | end | 145 | end |
| 138 | 146 | ||
| 139 | local function uncompress(default_ext, program, infile, outfile) | 147 | local function uncompress(default_ext, program, infile, outfile) |
| @@ -142,7 +150,11 @@ local function uncompress(default_ext, program, infile, outfile) | |||
| 142 | if not outfile then | 150 | if not outfile then |
| 143 | outfile = infile:gsub("%."..default_ext.."$", "") | 151 | outfile = infile:gsub("%."..default_ext.."$", "") |
| 144 | end | 152 | end |
| 145 | return fs.execute(fs.Q(program).." -c "..fs.Q(infile).." > "..fs.Q(outfile)) | 153 | if fs.execute(fs.Q(program).." -c "..fs.Q(infile).." > "..fs.Q(outfile)) then |
| 154 | return true | ||
| 155 | else | ||
| 156 | return nil, "failed extracting " .. infile | ||
| 157 | end | ||
| 146 | end | 158 | end |
| 147 | 159 | ||
| 148 | --- Uncompresses a .gz file. | 160 | --- 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 | |||
| 135 | -- @param zipfile string: pathname of .zip archive to be created. | 135 | -- @param zipfile string: pathname of .zip archive to be created. |
| 136 | -- @param ... Filenames to be stored in the archive are given as | 136 | -- @param ... Filenames to be stored in the archive are given as |
| 137 | -- additional arguments. | 137 | -- additional arguments. |
| 138 | -- @return boolean: true on success, false on failure. | 138 | -- @return boolean: true on success, nil and error message on failure. |
| 139 | function tools.zip(zipfile, ...) | 139 | function tools.zip(zipfile, ...) |
| 140 | return fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa a -tzip", zipfile, ...) | 140 | if fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa a -tzip", zipfile, ...) then |
| 141 | return true | ||
| 142 | else | ||
| 143 | return nil, "failed compressing " .. zipfile | ||
| 144 | end | ||
| 141 | end | 145 | end |
| 142 | 146 | ||
| 143 | --- Uncompress files from a .zip archive. | 147 | --- Uncompress files from a .zip archive. |
| 144 | -- @param zipfile string: pathname of .zip archive to be extracted. | 148 | -- @param zipfile string: pathname of .zip archive to be extracted. |
| 145 | -- @return boolean: true on success, false on failure. | 149 | -- @return boolean: true on success, nil and error message on failure. |
| 146 | function tools.unzip(zipfile) | 150 | function tools.unzip(zipfile) |
| 147 | assert(zipfile) | 151 | assert(zipfile) |
| 148 | return fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa x", zipfile) | 152 | if fs.execute_quiet(fs.Q(vars.SEVENZ).." -aoa x", zipfile) then |
| 153 | return true | ||
| 154 | else | ||
| 155 | return nil, "failed extracting " .. zipfile | ||
| 156 | end | ||
| 149 | end | 157 | end |
| 150 | 158 | ||
| 151 | local function sevenz(default_ext, infile, outfile) | 159 | local function sevenz(default_ext, infile, outfile) |
| @@ -160,7 +168,7 @@ local function sevenz(default_ext, infile, outfile) | |||
| 160 | local cmdline = fs.Q(vars.SEVENZ).." -aoa -t* -o"..fs.Q(outdir).." x "..fs.Q(infile) | 168 | local cmdline = fs.Q(vars.SEVENZ).." -aoa -t* -o"..fs.Q(outdir).." x "..fs.Q(infile) |
| 161 | local ok, err = fs.execute_quiet(cmdline) | 169 | local ok, err = fs.execute_quiet(cmdline) |
| 162 | if not ok then | 170 | if not ok then |
| 163 | return nil, err | 171 | return nil, "failed extracting " .. infile |
| 164 | end | 172 | end |
| 165 | 173 | ||
| 166 | if outfile then | 174 | if outfile then |
| @@ -168,7 +176,7 @@ local function sevenz(default_ext, infile, outfile) | |||
| 168 | dropext = fs.absolute_name(dropext) | 176 | dropext = fs.absolute_name(dropext) |
| 169 | ok, err = os.rename(dropext, outfile) | 177 | ok, err = os.rename(dropext, outfile) |
| 170 | if not ok then | 178 | if not ok then |
| 171 | return nil, err | 179 | return nil, "failed creating new file " .. outfile |
| 172 | end | 180 | end |
| 173 | end | 181 | end |
| 174 | 182 | ||
