Skip to content

Commit 40f1d1e

Browse files
Merge pull request #1301 from opencomponents/tarmode
add tarExtractMode for extracting packages
2 parents 900f47f + b21befa commit 40f1d1e

File tree

5 files changed

+36
-16
lines changed

5 files changed

+36
-16
lines changed

src/registry/domain/extract-package.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ export default async function extractPackage(
1010
| Express.Multer.File[]
1111
| {
1212
[fieldname: string]: Express.Multer.File[];
13-
}
13+
},
14+
tarExtractMode: number
1415
): Promise<{
1516
outputFolder: string;
1617
packageJson: PackageJson;
@@ -28,7 +29,11 @@ export default async function extractPackage(
2829

2930
await decompress({
3031
src: packagePath,
31-
dest: packageUntarOutput
32+
dest: packageUntarOutput,
33+
tar: {
34+
dmode: tarExtractMode,
35+
fmode: tarExtractMode
36+
}
3237
});
3338

3439
const packageJson = await getPackageJsonFromTempDir(packageOutput);

src/registry/domain/options-sanitiser.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ export default function optionsSanitiser(input: Input): Config {
6060
options.dependencies = [];
6161
}
6262

63+
if (typeof options.tarExtractMode === 'undefined') {
64+
options.tarExtractMode = 766;
65+
}
66+
6367
if (
6468
typeof options.fallbackRegistryUrl !== 'undefined' &&
6569
!options.fallbackRegistryUrl.endsWith('/')

src/registry/routes/publish.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export default function publish(repository: Repository) {
5454
}
5555

5656
try {
57-
const pkgDetails = await extractPackage(files);
57+
const pkgDetails = await extractPackage(files, res.conf.tarExtractMode);
5858

5959
try {
6060
await repository.publishComponent(

src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ export interface Config {
155155
liveReloadPort: number;
156156
components?: string[];
157157
local: boolean;
158+
tarExtractMode: number;
158159
path: string;
159160
plugins: Record<string, (...args: unknown[]) => void>;
160161
pollingInterval: number;

test/unit/registry-domain-extract-package.js

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,27 @@ describe('registry : domain : extract-package', () => {
3636

3737
decompressStub.yields();
3838

39-
extractPackage([
40-
{
41-
filename: '1478279453422.tar.gz',
42-
path: '/some-path/registry/temp/1478279453422.tar.gz'
43-
}
44-
])
39+
extractPackage(
40+
[
41+
{
42+
filename: '1478279453422.tar.gz',
43+
path: '/some-path/registry/temp/1478279453422.tar.gz'
44+
}
45+
],
46+
766
47+
)
4548
.then(res => (response = res))
4649
.finally(done);
4750
});
4851

4952
it('should decompress tar.gz file', () => {
5053
expect(decompressStub.args[0][0]).to.eql({
5154
src: '/some-path/registry/temp/1478279453422.tar.gz',
52-
dest: '/some-path/registry/temp/1478279453422/'
55+
dest: '/some-path/registry/temp/1478279453422/',
56+
tar: {
57+
dmode: 766,
58+
fmode: 766
59+
}
5360
});
5461
});
5562

@@ -78,12 +85,15 @@ describe('registry : domain : extract-package', () => {
7885

7986
decompressStub.yields('error!');
8087

81-
extractPackage([
82-
{
83-
filename: '1478279453422.tar.gz',
84-
path: '/some-path/registry/temp/1478279453422.tar.gz'
85-
}
86-
])
88+
extractPackage(
89+
[
90+
{
91+
filename: '1478279453422.tar.gz',
92+
path: '/some-path/registry/temp/1478279453422.tar.gz'
93+
}
94+
],
95+
766
96+
)
8797
.catch(err => (error = err))
8898
.finally(done);
8999
});

0 commit comments

Comments
 (0)