Skip to content

Commit d596d88

Browse files
atian25fengmk2
andauthored
feat: support uncompressing symlink (#31)
closes #58 closes #93 --------- Co-authored-by: fengmk2 <fengmk2@gmail.com>
1 parent d17b1ed commit d596d88

File tree

19 files changed

+467
-204
lines changed

19 files changed

+467
-204
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ coverage
44
.vscode
55
test/fixtures/types/*.js
66
test/fixtures/chinese-path-test.zip
7-
yarn.lock
87
.DS_Store
8+
yarn.lock
9+
!test/fixtures/symlink/node_modules

lib/utils.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,20 @@ exports.makeUncompressFn = StreamClass => {
118118
entryCount++;
119119
pump(stream, fs.createWriteStream(fullpath, { mode: opts.mode || header.mode }), err => {
120120
if (err) return reject(err);
121-
122121
successCount++;
123122
done();
124123
});
125124
});
125+
} else if (header.type === 'symlink') {
126+
// symlink
127+
const src = path.join(destDir, header.name);
128+
const target = path.resolve(path.dirname(src), header.linkname);
129+
entryCount++;
130+
fs.symlink(target, src, err => {
131+
if (err) return reject(err);
132+
successCount++;
133+
stream.resume();
134+
});
126135
} else { // directory
127136
mkdirp(path.join(destDir, header.name), err => {
128137
if (err) return reject(err);

test/fixtures/symlink.tgz

1.7 KB
Binary file not shown.

test/fixtures/symlink/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
./node_modules/_enums@1.0.3@enums/README.md

test/fixtures/symlink/cli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules/cli

test/fixtures/symlink/node_modules/_enums@1.0.3@enums/History.md

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/fixtures/symlink/node_modules/_enums@1.0.3@enums/README.md

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/fixtures/symlink/node_modules/_enums@1.0.3@enums/index.js

Lines changed: 59 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/fixtures/symlink/node_modules/_enums@1.0.3@enums/package.json

Lines changed: 44 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/fixtures/symlink/node_modules/cli

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)