@teambit/toolbox.fs.hard-link-directory 0.0.9 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hard-link-directory.js +27 -10
- package/dist/hard-link-directory.js.map +1 -1
- package/dist/hard-link-directory.spec.js +0 -1
- package/dist/hard-link-directory.spec.js.map +1 -1
- package/{preview-1667014802517.js → dist/preview-1676811569495.js} +1 -1
- package/hard-link-directory.spec.ts +0 -1
- package/hard-link-directory.ts +24 -10
- package/package-tar/teambit-toolbox.fs.hard-link-directory-0.0.12.tgz +0 -0
- package/package.json +4 -4
- package/package-tar/teambit-toolbox.fs.hard-link-directory-0.0.9.tgz +0 -0
|
@@ -23,43 +23,60 @@ const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
|
23
23
|
*/
|
|
24
24
|
function hardLinkDirectory(src, destDirs) {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
if (destDirs.length === 0)
|
|
27
|
+
return;
|
|
26
28
|
const files = yield fs_extra_1.default.readdir(src);
|
|
27
29
|
yield Promise.all(files.map((file) => __awaiter(this, void 0, void 0, function* () {
|
|
28
30
|
if (file === 'node_modules')
|
|
29
31
|
return;
|
|
30
32
|
const srcFile = path_1.default.join(src, file);
|
|
31
33
|
if ((yield fs_extra_1.default.lstat(srcFile)).isDirectory()) {
|
|
32
|
-
yield Promise.all(destDirs.map((destDir) => __awaiter(this, void 0, void 0, function* () {
|
|
33
|
-
const
|
|
34
|
+
const destSubdirs = yield Promise.all(destDirs.map((destDir) => __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
const destSubdir = path_1.default.join(destDir, file);
|
|
34
36
|
try {
|
|
35
|
-
yield fs_extra_1.default.mkdir(
|
|
37
|
+
yield fs_extra_1.default.mkdir(destSubdir, { recursive: true });
|
|
36
38
|
}
|
|
37
39
|
catch (err) {
|
|
38
40
|
if (err.code !== 'EEXIST')
|
|
39
41
|
throw err;
|
|
40
42
|
}
|
|
41
|
-
return
|
|
43
|
+
return destSubdir;
|
|
42
44
|
})));
|
|
45
|
+
yield hardLinkDirectory(srcFile, destSubdirs);
|
|
43
46
|
return;
|
|
44
47
|
}
|
|
45
48
|
yield Promise.all(destDirs.map((destDir) => __awaiter(this, void 0, void 0, function* () {
|
|
46
49
|
const destFile = path_1.default.join(destDir, file);
|
|
47
50
|
try {
|
|
48
|
-
yield
|
|
51
|
+
yield linkFile(srcFile, destFile);
|
|
49
52
|
}
|
|
50
53
|
catch (err) {
|
|
51
54
|
if (err.code === 'ENOENT') {
|
|
52
|
-
|
|
53
|
-
yield fs_extra_1.default.link(srcFile, destFile);
|
|
55
|
+
// broken symlinks are skipped
|
|
54
56
|
return;
|
|
55
57
|
}
|
|
56
|
-
|
|
57
|
-
throw err;
|
|
58
|
-
}
|
|
58
|
+
throw err;
|
|
59
59
|
}
|
|
60
60
|
})));
|
|
61
61
|
})));
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
exports.hardLinkDirectory = hardLinkDirectory;
|
|
65
|
+
function linkFile(srcFile, destFile) {
|
|
66
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
try {
|
|
68
|
+
yield fs_extra_1.default.link(srcFile, destFile);
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
if (err.code === 'ENOENT') {
|
|
72
|
+
yield fs_extra_1.default.mkdir(path_1.default.dirname(destFile), { recursive: true });
|
|
73
|
+
yield fs_extra_1.default.link(srcFile, destFile);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (err.code !== 'EEXIST') {
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
65
82
|
//# sourceMappingURL=hard-link-directory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hard-link-directory.js","sourceRoot":"","sources":["../hard-link-directory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,wDAA0B;AAE1B;;;;;GAKG;AACH,SAAsB,iBAAiB,CAAC,GAAW,EAAE,QAAkB;;QACrE,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,CAAO,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,cAAc;gBAAE,OAAO;YACpC,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,kBAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC3C,MAAM,OAAO,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"hard-link-directory.js","sourceRoot":"","sources":["../hard-link-directory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,wDAA0B;AAE1B;;;;;GAKG;AACH,SAAsB,iBAAiB,CAAC,GAAW,EAAE,QAAkB;;QACrE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAClC,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,CAAO,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,cAAc;gBAAE,OAAO;YACpC,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,kBAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC3C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,QAAQ,CAAC,GAAG,CAAC,CAAO,OAAO,EAAE,EAAE;oBAC7B,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAC5C,IAAI;wBACF,MAAM,kBAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;qBACjD;oBAAC,OAAO,GAAQ,EAAE;wBACjB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;4BAAE,MAAM,GAAG,CAAC;qBACtC;oBACD,OAAO,UAAU,CAAC;gBACpB,CAAC,CAAA,CAAC,CACH,CAAC;gBACF,MAAM,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAC9C,OAAO;aACR;YACD,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,CAAO,OAAO,EAAE,EAAE;gBAC7B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC1C,IAAI;oBACF,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;iBACnC;gBAAC,OAAO,GAAQ,EAAE;oBACjB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;wBACzB,8BAA8B;wBAC9B,OAAO;qBACR;oBACD,MAAM,GAAG,CAAC;iBACX;YACH,CAAC,CAAA,CAAC,CACH,CAAC;QACJ,CAAC,CAAA,CAAC,CACH,CAAC;IACJ,CAAC;CAAA;AAtCD,8CAsCC;AAED,SAAe,QAAQ,CAAC,OAAe,EAAE,QAAgB;;QACvD,IAAI;YACF,MAAM,kBAAE,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SAClC;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACzB,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,MAAM,kBAAE,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACjC,OAAO;aACR;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACzB,MAAM,GAAG,CAAC;aACX;SACF;IACH,CAAC;CAAA"}
|
|
@@ -23,7 +23,6 @@ test('hardLinkDirectory()', () => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
23
23
|
const dest2Dir = path_1.default.join(tempDir, 'dest2');
|
|
24
24
|
fs_extra_1.default.mkdirpSync(srcDir);
|
|
25
25
|
fs_extra_1.default.mkdirpSync(dest1Dir);
|
|
26
|
-
fs_extra_1.default.mkdirpSync(dest2Dir);
|
|
27
26
|
fs_extra_1.default.mkdirpSync(path_1.default.join(srcDir, 'node_modules'));
|
|
28
27
|
fs_extra_1.default.mkdirpSync(path_1.default.join(srcDir, 'subdir'));
|
|
29
28
|
fs_extra_1.default.writeFileSync(path_1.default.join(srcDir, 'file.txt'), 'Hello World');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hard-link-directory.spec.js","sourceRoot":"","sources":["../hard-link-directory.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,wDAA0B;AAC1B,gDAAwB;AACxB,8FAA4E;AAC5E,+DAA0D;AAE1D,IAAI,CAAC,qBAAqB,EAAE,GAAS,EAAE;IACrC,MAAM,OAAO,GAAG,IAAA,kDAAgB,GAAE,CAAC;IACnC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE7C,kBAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtB,kBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACxB,kBAAE,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"hard-link-directory.spec.js","sourceRoot":"","sources":["../hard-link-directory.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,wDAA0B;AAC1B,gDAAwB;AACxB,8FAA4E;AAC5E,+DAA0D;AAE1D,IAAI,CAAC,qBAAqB,EAAE,GAAS,EAAE;IACrC,MAAM,OAAO,GAAG,IAAA,kDAAgB,GAAE,CAAC;IACnC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE7C,kBAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtB,kBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACxB,kBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IACjD,kBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE3C,kBAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;IAC/D,kBAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,aAAa,CAAC,CAAC;IACtE,kBAAE,CAAC,aAAa,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAAE,aAAa,CAAC,CAAC;IAE5E,MAAM,IAAA,uCAAiB,EAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtD,yCAAyC;IACzC,MAAM,CAAC,kBAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrF,MAAM,CAAC,kBAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAErF,2CAA2C;IAC3C,MAAM,CAAC,kBAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5F,MAAM,CAAC,kBAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE5F,6CAA6C;IAC7C,MAAM,CAAC,kBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChF,MAAM,CAAC,kBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClF,CAAC,CAAA,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
;
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.toolbox_fs_hard-link-directory@0.0.
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.toolbox_fs_hard-link-directory@0.0.12/dist/hard-link-directory.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [];
|
|
5
5
|
export const overview = [overview_0];
|
package/hard-link-directory.ts
CHANGED
|
@@ -8,42 +8,56 @@ import fs from 'fs-extra';
|
|
|
8
8
|
* @param destDirs - The target directories.
|
|
9
9
|
*/
|
|
10
10
|
export async function hardLinkDirectory(src: string, destDirs: string[]) {
|
|
11
|
+
if (destDirs.length === 0) return;
|
|
11
12
|
const files = await fs.readdir(src);
|
|
12
13
|
await Promise.all(
|
|
13
14
|
files.map(async (file) => {
|
|
14
15
|
if (file === 'node_modules') return;
|
|
15
16
|
const srcFile = path.join(src, file);
|
|
16
17
|
if ((await fs.lstat(srcFile)).isDirectory()) {
|
|
17
|
-
await Promise.all(
|
|
18
|
+
const destSubdirs = await Promise.all(
|
|
18
19
|
destDirs.map(async (destDir) => {
|
|
19
|
-
const
|
|
20
|
+
const destSubdir = path.join(destDir, file);
|
|
20
21
|
try {
|
|
21
|
-
await fs.mkdir(
|
|
22
|
+
await fs.mkdir(destSubdir, { recursive: true });
|
|
22
23
|
} catch (err: any) {
|
|
23
24
|
if (err.code !== 'EEXIST') throw err;
|
|
24
25
|
}
|
|
25
|
-
return
|
|
26
|
+
return destSubdir;
|
|
26
27
|
})
|
|
27
28
|
);
|
|
29
|
+
await hardLinkDirectory(srcFile, destSubdirs);
|
|
28
30
|
return;
|
|
29
31
|
}
|
|
30
32
|
await Promise.all(
|
|
31
33
|
destDirs.map(async (destDir) => {
|
|
32
34
|
const destFile = path.join(destDir, file);
|
|
33
35
|
try {
|
|
34
|
-
await
|
|
36
|
+
await linkFile(srcFile, destFile);
|
|
35
37
|
} catch (err: any) {
|
|
36
38
|
if (err.code === 'ENOENT') {
|
|
37
|
-
|
|
38
|
-
await fs.link(srcFile, destFile);
|
|
39
|
+
// broken symlinks are skipped
|
|
39
40
|
return;
|
|
40
41
|
}
|
|
41
|
-
|
|
42
|
-
throw err;
|
|
43
|
-
}
|
|
42
|
+
throw err;
|
|
44
43
|
}
|
|
45
44
|
})
|
|
46
45
|
);
|
|
47
46
|
})
|
|
48
47
|
);
|
|
49
48
|
}
|
|
49
|
+
|
|
50
|
+
async function linkFile(srcFile: string, destFile: string) {
|
|
51
|
+
try {
|
|
52
|
+
await fs.link(srcFile, destFile);
|
|
53
|
+
} catch (err: any) {
|
|
54
|
+
if (err.code === 'ENOENT') {
|
|
55
|
+
await fs.mkdir(path.dirname(destFile), { recursive: true });
|
|
56
|
+
await fs.link(srcFile, destFile);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (err.code !== 'EEXIST') {
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/toolbox.fs.hard-link-directory",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/toolbox/fs/hard-link-directory",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.toolbox",
|
|
8
8
|
"name": "fs/hard-link-directory",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.12"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"fs-extra": "10.0.0"
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"@types/fs-extra": "9.0.7",
|
|
16
16
|
"@types/mocha": "9.1.0",
|
|
17
|
-
"@babel/runtime": "7.20.0",
|
|
18
|
-
"@types/node": "12.20.4",
|
|
19
17
|
"@types/jest": "26.0.20",
|
|
18
|
+
"@types/node": "12.20.4",
|
|
19
|
+
"@babel/runtime": "7.20.0",
|
|
20
20
|
"@teambit/defender.fs.global-bit-temp-dir": "0.0.1"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {},
|
|
Binary file
|