@datatruck/cli 0.22.1 → 0.22.2

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.
@@ -74,8 +74,8 @@ class MysqlDumpTask extends TaskAbstract_1.TaskAbstract {
74
74
  files.every((file) => file === schemaFile || file === dataFile);
75
75
  if (!successCsvDump)
76
76
  throw new AppError_1.AppError(`Invalid csv dump files: ${files.join(", ")}`);
77
- await (0, promises_1.rename)((0, path_1.join)(tableSharedPath, schemaFile), (0, path_1.join)(outputPath, `${tableName}${suffix.tableSchema}`));
78
- await (0, promises_1.rename)((0, path_1.join)(tableSharedPath, dataFile), (0, path_1.join)(outputPath, `${tableName}${suffix.tableData}`));
77
+ await (0, fs_1.safeRename)((0, path_1.join)(tableSharedPath, schemaFile), (0, path_1.join)(outputPath, `${tableName}${suffix.tableSchema}`));
78
+ await (0, fs_1.safeRename)((0, path_1.join)(tableSharedPath, dataFile), (0, path_1.join)(outputPath, `${tableName}${suffix.tableData}`));
79
79
  }
80
80
  finally {
81
81
  await (0, promises_1.rm)(tableSharedPath, { recursive: true });
@@ -214,7 +214,7 @@ class MysqlDumpTask extends TaskAbstract_1.TaskAbstract {
214
214
  });
215
215
  const sharedFilePath = (0, path_1.join)(sharedDir, `tmp-dtt-restore-${data.snapshot.id.slice(0, 8)}-${tableName}.data.csv`);
216
216
  try {
217
- await (0, promises_1.rename)(filePath, sharedFilePath);
217
+ await (0, fs_1.safeRename)(filePath, sharedFilePath);
218
218
  await sql.importCsvFile(sharedFilePath, database.name, tableName);
219
219
  }
220
220
  finally {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datatruck/cli",
3
- "version": "0.22.1",
3
+ "version": "0.22.2",
4
4
  "dependencies": {
5
5
  "ajv": "^8.12.0",
6
6
  "async": "^3.2.4",
package/utils/fs.d.ts CHANGED
@@ -120,4 +120,5 @@ export declare function createWriteStreamPool(options: {
120
120
  };
121
121
  export declare function countFileLines(path: string): Promise<number>;
122
122
  export declare function fetchData<T>(input: T, onPath?: (input: Exclude<T, string>) => string | undefined): Promise<string | null>;
123
+ export declare function safeRename(oldPath: string, newPath: string): Promise<void>;
123
124
  export {};
package/utils/fs.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.fetchData = exports.countFileLines = exports.createWriteStreamPool = exports.createFileScanner = exports.cpy = exports.isNotFoundError = exports.updateFileStats = exports.copyFileWithStreams = exports.waitForClose = exports.writeGitIgnoreList = exports.fastglobToGitIgnore = exports.forEachFile = exports.readDir = exports.readPartialFile = exports.mkTmpDir = exports.fastFolderSizeAsync = exports.tmpDir = exports.rmTmpDir = exports.isTmpDir = exports.sessionTmpDir = exports.parentTmpDir = exports.findFile = exports.parsePackageFile = exports.parseFile = exports.parseFileExtensions = exports.writeJSONFile = exports.existsFile = exports.existsDir = exports.safeStat = exports.ensureEmptyDir = exports.mkdirIfNotExists = exports.isLocalDir = exports.isEmptyDir = exports.isWSLSystem = void 0;
6
+ exports.safeRename = exports.fetchData = exports.countFileLines = exports.createWriteStreamPool = exports.createFileScanner = exports.cpy = exports.isNotFoundError = exports.updateFileStats = exports.copyFileWithStreams = exports.waitForClose = exports.writeGitIgnoreList = exports.fastglobToGitIgnore = exports.forEachFile = exports.readDir = exports.readPartialFile = exports.mkTmpDir = exports.fastFolderSizeAsync = exports.tmpDir = exports.rmTmpDir = exports.isTmpDir = exports.sessionTmpDir = exports.parentTmpDir = exports.findFile = exports.parsePackageFile = exports.parseFile = exports.parseFileExtensions = exports.writeJSONFile = exports.existsFile = exports.existsDir = exports.safeStat = exports.ensureEmptyDir = exports.mkdirIfNotExists = exports.isLocalDir = exports.isEmptyDir = exports.isWSLSystem = void 0;
7
7
  const globalData_1 = __importDefault(require("../globalData"));
8
8
  const math_1 = require("./math");
9
9
  const path_1 = require("./path");
@@ -544,3 +544,19 @@ async function fetchData(input, onPath) {
544
544
  return null;
545
545
  }
546
546
  exports.fetchData = fetchData;
547
+ async function safeRename(oldPath, newPath) {
548
+ try {
549
+ await (0, promises_1.rename)(oldPath, newPath);
550
+ }
551
+ catch (error) {
552
+ if (error instanceof Error &&
553
+ error.message.includes("cross-device link not permitted")) {
554
+ await (0, promises_1.cp)(oldPath, newPath, { recursive: true });
555
+ await (0, promises_1.rm)(oldPath, { recursive: true });
556
+ }
557
+ else {
558
+ throw error;
559
+ }
560
+ }
561
+ }
562
+ exports.safeRename = safeRename;
package/utils/mysql.js CHANGED
@@ -24,7 +24,6 @@ function createMysqlCli(options) {
24
24
  `user = "${options.username}"`,
25
25
  `password = "${password}"`,
26
26
  ];
27
- console.log(data.join("\n"));
28
27
  await (0, promises_1.writeFile)((defaultsFilePath = (0, path_1.join)(dir, "mysql.conf")), data.join("\n"));
29
28
  return defaultsFilePath;
30
29
  }