-
-
Notifications
You must be signed in to change notification settings - Fork 83
Expand file tree
/
Copy pathunzip.lua
More file actions
39 lines (31 loc) · 1.08 KB
/
unzip.lua
File metadata and controls
39 lines (31 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
local class = require('java-core.utils.class')
local log = require('java-core.utils.log2')
---@class java-core.Unzip
---@field source string
---@field dest string
local Unzip = class()
---@class java-core.UnzipOpts
---@field source string Path to zip file
---@field dest string Destination directory
---@param opts java-core.UnzipOpts
function Unzip:_init(opts)
self.source = opts.source
self.dest = opts.dest
end
---Extract zip file using unzip
---@return boolean|nil # true on success, nil on failure
---@return string|nil # Error message if failed
function Unzip:extract()
log.debug('unzip extracting:', self.source, 'to', self.dest)
local cmd = string.format('unzip -q -o %s -d %s', vim.fn.shellescape(self.source), vim.fn.shellescape(self.dest))
log.debug('unzip command:', cmd)
local result = vim.fn.system(cmd)
local exit_code = vim.v.shell_error
if exit_code ~= 0 then
log.error('unzip extraction failed:', exit_code, result)
return nil, string.format('unzip failed (exit %d): %s', exit_code, result)
end
log.debug('unzip extraction completed')
return true, nil
end
return Unzip