@tankpkg/sdk 0.15.4 → 0.15.6
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/index.mjs +45 -13
- package/dist/install/pipeline.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -6400,6 +6400,28 @@ function mkdirSafeNoSymlinks(targetDir) {
|
|
|
6400
6400
|
} else fs.mkdirSync(current);
|
|
6401
6401
|
}
|
|
6402
6402
|
}
|
|
6403
|
+
function isDirNonEmpty(dir) {
|
|
6404
|
+
try {
|
|
6405
|
+
return fs.readdirSync(dir).length > 0;
|
|
6406
|
+
} catch {
|
|
6407
|
+
return false;
|
|
6408
|
+
}
|
|
6409
|
+
}
|
|
6410
|
+
function moveEntryAcrossDevices(src, dst) {
|
|
6411
|
+
try {
|
|
6412
|
+
fs.renameSync(src, dst);
|
|
6413
|
+
} catch (err) {
|
|
6414
|
+
if (err.code === "EXDEV") {
|
|
6415
|
+
fs.cpSync(src, dst, { recursive: true });
|
|
6416
|
+
fs.rmSync(src, {
|
|
6417
|
+
recursive: true,
|
|
6418
|
+
force: true
|
|
6419
|
+
});
|
|
6420
|
+
return;
|
|
6421
|
+
}
|
|
6422
|
+
throw err;
|
|
6423
|
+
}
|
|
6424
|
+
}
|
|
6403
6425
|
async function extractSafely(tarball, destDir) {
|
|
6404
6426
|
if (tarball.length > MAX_DOWNLOAD_BYTES) throw new TankIntegrityError(`Tarball exceeds ${MAX_DOWNLOAD_BYTES} byte limit`);
|
|
6405
6427
|
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "tank-extract-"));
|
|
@@ -6407,6 +6429,7 @@ async function extractSafely(tarball, destDir) {
|
|
|
6407
6429
|
fs.writeFileSync(tmpTarball, tarball, { flag: "wx" });
|
|
6408
6430
|
let entryCount = 0;
|
|
6409
6431
|
let totalBytes = 0;
|
|
6432
|
+
let backupDir = null;
|
|
6410
6433
|
try {
|
|
6411
6434
|
await extract({
|
|
6412
6435
|
file: tmpTarball,
|
|
@@ -6426,22 +6449,31 @@ async function extractSafely(tarball, destDir) {
|
|
|
6426
6449
|
}
|
|
6427
6450
|
});
|
|
6428
6451
|
mkdirSafeNoSymlinks(destDir);
|
|
6452
|
+
if (isDirNonEmpty(destDir)) {
|
|
6453
|
+
backupDir = `${destDir}.tank-old-${crypto$1.randomUUID()}`;
|
|
6454
|
+
fs.renameSync(destDir, backupDir);
|
|
6455
|
+
mkdirSafeNoSymlinks(destDir);
|
|
6456
|
+
}
|
|
6429
6457
|
for (const entry of fs.readdirSync(tmpDir)) {
|
|
6430
6458
|
if (entry === path.basename(tmpTarball)) continue;
|
|
6431
|
-
|
|
6432
|
-
|
|
6433
|
-
|
|
6434
|
-
|
|
6435
|
-
|
|
6436
|
-
|
|
6437
|
-
|
|
6438
|
-
|
|
6439
|
-
recursive: true,
|
|
6440
|
-
force: true
|
|
6441
|
-
});
|
|
6442
|
-
} else throw err;
|
|
6443
|
-
}
|
|
6459
|
+
moveEntryAcrossDevices(path.join(tmpDir, entry), path.join(destDir, entry));
|
|
6460
|
+
}
|
|
6461
|
+
if (backupDir !== null) {
|
|
6462
|
+
fs.rmSync(backupDir, {
|
|
6463
|
+
recursive: true,
|
|
6464
|
+
force: true
|
|
6465
|
+
});
|
|
6466
|
+
backupDir = null;
|
|
6444
6467
|
}
|
|
6468
|
+
} catch (err) {
|
|
6469
|
+
if (backupDir !== null && fs.existsSync(backupDir)) try {
|
|
6470
|
+
fs.rmSync(destDir, {
|
|
6471
|
+
recursive: true,
|
|
6472
|
+
force: true
|
|
6473
|
+
});
|
|
6474
|
+
fs.renameSync(backupDir, destDir);
|
|
6475
|
+
} catch {}
|
|
6476
|
+
throw err;
|
|
6445
6477
|
} finally {
|
|
6446
6478
|
fs.rmSync(tmpDir, {
|
|
6447
6479
|
recursive: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/install/pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAsBjE,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,YAAY,EAAE,EACrB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAyE7D;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,EAClB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACjC,IAAI,CAsBN;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2BpF;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,YAAY,EAAE,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9D,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACjC,UAAU,CAiCZ;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/install/pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAsBjE,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,YAAY,EAAE,EACrB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACjC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAyE7D;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,EAClB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACjC,IAAI,CAsBN;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2BpF;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,YAAY,EAAE,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9D,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACjC,UAAU,CAiCZ;AA4CD,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EnF;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAO9E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAWhH"}
|
package/package.json
CHANGED