dl-tgz
A Node.js module to download and extract a gzipped tar archive with the Observable API
const readdirSync = ;const dlTgz = ; const url = 'https://****.org/my-archive.tar';/* my-archive ├── LICENSE ├── README.md ├── INSTALL └── bin └── app.exe*/ ;
✓ bin/
✓ bin/app.exe
✓ README.md
✓ LICENSE
✓ install
Completed.
Installation
npm install dl-tgz
API
const dlTgz = ;
dlTgz(tarArchiveUrl, extractDir [, options])
tarArchiveUrl: string
extractDir: string
(a path where the archive will be extracted)
options: Object
Return: Observable
(zenparsing's implementation)
When the Observable
is subscribed, it starts to download a tgz archive, extract it and successively send extraction progress to its Observer
.
When the Subscription
is unsubscribed, it stops downloading and extracting.
Progress
Every progress object have two properties entry
and response
.
entry
Type: Object {bytes: <number>, header: <Object>}
entry.header
is a header of the entry, and entry.bytes
is the total size of currently extracted entry. bytes
is always 0
if the entry is not a file but directory, link or symlink.
For example you can get the progress of each entry as a percentage by (progress.entry.bytes / progress.entry.header.size || 0) * 100
.
;
0.0 %
0.1 %
0.3 %
0.4 %
︙
99.6 %
99.8 %
99.9 %
100.0 %
>> OK bin/app.exe
0.0 %
0.1 %
0.2 %
0.3 %
︙
response
Type: Object {bytes: <number>, headers: <Object>, url: <string>}
response.url
is the final redirected URL of the request, response.headers
is a response header object derived from http.IncomingMessage
, and response.bytes
is a total content length of the downloaded archive. content-length
header will be converted to number
if it is string
.
Options
You can pass options to Request and tar-fs's extract
method. Note that:
ignore
option is applied beforemap
option modifies filenames.strip
option defaults to1
, not0
. That means the top level directory is stripped off by default.fs
option defaults to graceful-fs for more stability.
License
ISC License © 2017 - 2018 Shinnosuke Watanabe