-
Notifications
You must be signed in to change notification settings - Fork 0
/
jsRunner.js
74 lines (61 loc) · 1.73 KB
/
jsRunner.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// run this file with node or nodemon
const fs = require("fs");
const path = require("path");
const readline = require("readline");
function getJavaScriptFiles() {
const files = fs.readdirSync(__dirname);
return files.filter((file) => file.endsWith(".js") && file !== "jsRunner.js");
}
function prompt(question) {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
return new Promise((resolve) => {
rl.question(question, (answer) => {
rl.close();
resolve(answer);
});
});
}
// Function to run the selected JavaScript file
function runJavaScriptFile(fileName) {
const filePath = path.join(__dirname, fileName + ".js");
if (!fs.existsSync(filePath)) {
console.log(`File '${fileName}' does not exist.`);
return;
}
console.log(`Running ${fileName}:`);
require(filePath);
console.log("---------------------------");
console.log("Available JavaScript files:");
const files = getJavaScriptFiles();
console.log(files);
}
async function main() {
console.log("Available JavaScript files:");
const files = getJavaScriptFiles();
console.log(files);
let exit = false;
while (!exit) {
const choice = await prompt(
'Select a file to run or enter "X" to exit jsRunner.js: '
);
if (choice.toUpperCase() === "X") {
console.log("Exiting jsRunner.js");
exit = true;
} else {
const fileToRun = files.find((file) =>
file.toLowerCase().startsWith(choice.toLowerCase())
);
if (fileToRun) {
runJavaScriptFile(fileToRun.slice(0, -3));
console.log("---------------------------");
} else {
console.log("Invalid choice. Please try again.");
}
}
}
process.exit(0);
}
main();