refactoring to ts
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
#! /usr/bin/env node
|
||||
// @ts-check
|
||||
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
import { spawn } from "child_process";
|
||||
import handleEnvVars from "./utils/env";
|
||||
|
||||
const confFileProvidedPath = process.argv[process.argv.length - 1];
|
||||
|
||||
if (confFileProvidedPath === "--version" || confFileProvidedPath === "-v") {
|
||||
try {
|
||||
const packageJson = fs.readFileSync(
|
||||
path.resolve(__dirname, "package.json"),
|
||||
"utf8"
|
||||
);
|
||||
console.log(`Turbo Sync Version: ${JSON.parse(packageJson).version}`);
|
||||
} catch (error) {
|
||||
console.log(
|
||||
"Turbo Sync Version fetch failed! \nNo Worries, Turbo Sync is still installed properly"
|
||||
);
|
||||
}
|
||||
|
||||
process.exit(6);
|
||||
}
|
||||
|
||||
console.log("Running Folder Sync ...");
|
||||
|
||||
const defaultConfigFilePath = path.resolve(
|
||||
process.cwd(),
|
||||
"turbosync.config.json"
|
||||
);
|
||||
|
||||
const confFileComputedPath =
|
||||
typeof confFileProvidedPath == "string" &&
|
||||
confFileProvidedPath.endsWith(".json")
|
||||
? path.resolve(process.cwd(), confFileProvidedPath)
|
||||
: null;
|
||||
|
||||
if (!fs.existsSync(defaultConfigFilePath) && !confFileComputedPath) {
|
||||
console.log(
|
||||
"Please Provide the path to a config file or add a config file named `turbosync.config.json` to the path you're running this program"
|
||||
);
|
||||
|
||||
process.exit();
|
||||
}
|
||||
|
||||
if (
|
||||
!defaultConfigFilePath &&
|
||||
confFileComputedPath &&
|
||||
!fs.existsSync(confFileComputedPath)
|
||||
) {
|
||||
console.log("Config File does not exist");
|
||||
process.exit();
|
||||
}
|
||||
|
||||
try {
|
||||
const configFinalPath = fs.existsSync(defaultConfigFilePath)
|
||||
? defaultConfigFilePath
|
||||
: confFileComputedPath && fs.existsSync(confFileComputedPath)
|
||||
? confFileComputedPath
|
||||
: null;
|
||||
|
||||
const configJSON = configFinalPath
|
||||
? fs.readFileSync(configFinalPath, "utf8")
|
||||
: null;
|
||||
|
||||
if (!configJSON)
|
||||
throw new Error(
|
||||
"Config JSON could not be resolved. Please check your files."
|
||||
);
|
||||
|
||||
const parsedConfigJSON = handleEnvVars({ json: configJSON });
|
||||
|
||||
/** @type {import(".").TurboSyncConfigArray} */
|
||||
const configArray = JSON.parse(parsedConfigJSON);
|
||||
|
||||
for (let i = 0; i < configArray.length; i++) {
|
||||
const config = configArray[i];
|
||||
console.log(`Syncing \`${config.title} ...\``);
|
||||
|
||||
const childProcess = spawn(
|
||||
"node",
|
||||
[
|
||||
path.resolve(__dirname, "./lib/sync.js"),
|
||||
`${JSON.stringify(config)}`,
|
||||
],
|
||||
{
|
||||
stdio: "inherit",
|
||||
detached: false,
|
||||
}
|
||||
);
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.log(`Process Error =>`, error.message);
|
||||
process.exit();
|
||||
}
|
||||
|
||||
setInterval(() => {
|
||||
console.log(
|
||||
`Turbo Sync Running for ${process.uptime().toLocaleString()}s ...`
|
||||
);
|
||||
}, 60000);
|
||||
Reference in New Issue
Block a user