54 lines
No EOL
1.9 KiB
JavaScript
54 lines
No EOL
1.9 KiB
JavaScript
import { randomBytes } from "crypto";
|
|
import { existsSync, unlinkSync, appendFileSync } from "fs";
|
|
import { createInterface } from "readline";
|
|
import { Cyan, Bright, Green } from "./sub/console-text.js";
|
|
import { execSync } from "child_process";
|
|
|
|
let envPath = './.env';
|
|
let q = `${Cyan('?')} \x1b[1m`;
|
|
let ob = { streamSalt: randomBytes(64).toString('hex') }
|
|
let rl = createInterface({ input: process.stdin,output: process.stdout });
|
|
|
|
console.log(
|
|
`${Cyan("Welcome to cobalt!")}\n${Bright("We'll get you up and running in no time.\nLet's start by creating a ")}${Cyan(".env")}${Bright(" file. You can always change it later.")}`
|
|
)
|
|
console.log(
|
|
Bright("\nWhat's the selfURL we'll be running on? (localhost)")
|
|
)
|
|
|
|
rl.question(q, r1 => {
|
|
if (r1) {
|
|
ob['selfURL'] = `https://${r1}/`
|
|
} else {
|
|
ob['selfURL'] = `http://localhost`
|
|
}
|
|
console.log(Bright("\nGreat! Now, what's the port we'll be running on? (9000)"))
|
|
rl.question(q, r2 => {
|
|
if (!r1 && !r2) {
|
|
ob['selfURL'] = `http://localhost:9000/`
|
|
ob['port'] = 9000
|
|
} else if (!r1 && r2) {
|
|
ob['selfURL'] = `http://localhost:${r2}/`
|
|
ob['port'] = r2
|
|
} else {
|
|
ob['port'] = r2
|
|
}
|
|
final()
|
|
});
|
|
})
|
|
|
|
let final = () => {
|
|
if (existsSync(envPath)) {
|
|
unlinkSync(envPath)
|
|
}
|
|
for (let i in ob) {
|
|
appendFileSync(envPath, `${i}=${ob[i]}\n`)
|
|
}
|
|
console.log(Bright("\nI've created a .env file with selfURL, port, and stream salt."))
|
|
console.log(`${Bright("Now I'll run")} ${Cyan("npm install")} ${Bright("to install all dependencies. It shouldn't take long.\n\n")}`)
|
|
execSync('npm install',{stdio:[0,1,2]});
|
|
console.log(`\n\n${Green("All done!\n")}`)
|
|
console.log("You can re-run this script any time to update the configuration.")
|
|
console.log("\nYou're now ready to start the main project.\nHave fun!")
|
|
rl.close()
|
|
} |