diff --git a/restart_session.js b/restart_session.js new file mode 100644 index 0000000..d9a1dce --- /dev/null +++ b/restart_session.js @@ -0,0 +1,63 @@ +/** + * @prettier + */ +"use strict"; + +/* Module Require */ +const child_process = require("child_process"), + path = require("path"); + +const exec = function (cmdLine, opts) { + console.log(cmdLine, typeof opts !== "undefined" ? opts : ""); + console.log(child_process.execSync(cmdLine, opts).toString()); + }, + getFiles = function (module_name, dir) { + return child_process + .execSync(`find ${path.join(process.env.LI_HOME, module_name, dir, session_name)} -name "*json"`) + .toString() + .split("\n") + .slice(0, -1) + .map(function (item) { + return item.split(session_name)[1]; + }); + }, + buildArgs = function (args) { + let result = {}; + for (let i = 0; i < args.length; i += 2) { + if (args[i].substring(0, 2) === "--") result[args[i].substring(2)] = args[i + 1]; + } + return result; + }; + +let myArgs = buildArgs(process.argv.slice(2)), + modules = typeof myArgs.modules !== undefined ? myArgs.modules.split(",") : [], + session_name = myArgs.session, + i = 0; + +if (modules.length <= 0) { + console.log("use --modules \twhere modules is like module1,module2,..."); + process.exit(0); +} +if (typeof session_name === "undefined" || session_name === "") { + console.log("use --session \twhere session is like XXX_XXXX-XX-XX_XXX"); + process.exit(0); +} + +while (i < modules.length) { + let files = getFiles(modules[i], "in"); + exec(`./run --standalone ${session_name}`, { + cwd: `${path.join(process.env.LI_HOME, modules[i])}` + }); + let filesStillIn = getFiles(modules[i], "in"), + filesProceed = files.filter(function (x) { + return !filesStillIn.includes(x); + }); + if (i < modules.length - 1) + for (let j = 0; j < filesProceed.length; j++) { + let a = path.join(process.env.LI_HOME, modules[i], "out", session_name, filesProceed[j]), + b = path.join(process.env.LI_HOME, modules[i + 1], "in", session_name, filesProceed[j]); + exec(`cp ${a} ${b}`); + } + if (filesStillIn.length === 0) i++; + else console.log("restart " + modules[i]); +}