datasquirel/engine/dump.js

63 lines
1.7 KiB
JavaScript
Raw Normal View History

2023-09-21 14:00:04 +00:00
#! /usr/bin/env node
// @ts-check
const fs = require("fs");
const path = require("path");
const { execSync } = require("child_process");
require("dotenv").config({
path: path.resolve(process.cwd(), ".env"),
});
2024-10-14 06:49:01 +00:00
const mysqlPath = process.platform?.match(/win/i)
? "'" + "C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin\\mysql.exe" + "'"
: "mysql";
const mysqlDumpPath = process.platform?.match(/win/i)
? "'" +
"C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin\\mysqldump.exe" +
"'"
: "mysqldump";
2023-09-21 14:00:04 +00:00
2024-12-06 10:31:24 +00:00
const { DSQL_USER, DSQL_PASS, DSQL_DB_NAME } = process.env;
2023-09-21 14:00:04 +00:00
const dbName = DSQL_DB_NAME || "";
const dumpFilePathArg = process.argv.indexOf("--file");
if (dumpFilePathArg < 0) {
console.log("Please provide a dump file path using `--file` argument");
process.exit();
}
const dumpFilePath = process.argv[dumpFilePathArg + 1];
if (!dbName?.match(/./)) {
console.log("DSQL_DB_NAME is required in your `.env` file");
process.exit();
}
if (!DSQL_USER?.match(/./) || !DSQL_PASS?.match(/./)) {
console.log("DSQL_USER and DSQL_PASS are required in your `.env` file");
process.exit();
}
try {
let execSyncOptions = {
cwd: process.cwd(),
};
2024-10-14 06:49:01 +00:00
// if (process.platform.match(/win/i)) execSyncOptions.shell = "bash.exe";
2023-09-21 14:00:04 +00:00
2024-10-14 06:49:01 +00:00
const dump = execSync(
`${mysqlPath} -u ${DSQL_USER} -p${DSQL_PASS} ${dbName} < ${dumpFilePath}`,
execSyncOptions
);
2023-09-21 14:00:04 +00:00
console.log("Dumped successfully", dump.toString());
////////////////////////////////////////
////////////////////////////////////////
////////////////////////////////////////
} catch (/** @type {*} */ error) {
console.log("Dump Error: ", error.message);
}