Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Video-Downloader/api/src/util/setup.js
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
105 lines (85 sloc)
4.74 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { existsSync, unlinkSync, appendFileSync } from "fs"; | |
import { createInterface } from "readline"; | |
import { Cyan, Bright } from "../misc/console-text.js"; | |
import { loadJSON } from "../misc/load-from-fs.js"; | |
import { execSync } from "child_process"; | |
const { version } = loadJSON("./package.json"); | |
let envPath = './.env'; | |
let q = `${Cyan('?')} \x1b[1m`; | |
let ob = {}; | |
let rl = createInterface({ input: process.stdin, output: process.stdout }); | |
let final = () => { | |
if (existsSync(envPath)) unlinkSync(envPath); | |
for (let i in ob) { | |
appendFileSync(envPath, `${i}=${ob[i]}\n`) | |
} | |
console.log(Bright("\nAwesome! I've created a fresh .env file for you.")); | |
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${Cyan("All done!\n")}`); | |
console.log(Bright("You can re-run this script at any time to update the configuration.")); | |
console.log(Bright("\nYou're now ready to start cobalt. Simply run ") + Cyan("npm start") + Bright('!\nHave fun :)')); | |
rl.close() | |
} | |
console.log( | |
`${Cyan(`Hey, this is cobalt v.${version}!`)}\n${Bright("Let's start by creating a new ")}${Cyan(".env")}${Bright(" file. You can always change it later.")}` | |
) | |
function setup() { | |
console.log(Bright("\nWhat kind of server will this instance be?\nOptions: api, web.")); | |
rl.question(q, r1 => { | |
switch (r1.toLowerCase()) { | |
case 'api': | |
console.log(Bright("\nCool! What's the domain this API instance will be running on? (localhost)\nExample: api.cobalt.tools")); | |
rl.question(q, apiURL => { | |
ob.API_URL = `http://localhost:9000/`; | |
ob.API_PORT = 9000; | |
if (apiURL && apiURL !== "localhost") ob.API_URL = `https://${apiURL.toLowerCase()}/`; | |
console.log(Bright("\nGreat! Now, what port will it be running on? (9000)")); | |
rl.question(q, apiPort => { | |
if (apiPort) ob.API_PORT = apiPort; | |
if (apiPort && (apiURL === "localhost" || !apiURL)) ob.API_URL = `http://localhost:${apiPort}/`; | |
console.log(Bright("\nWhat will your instance's name be? Usually it's something like eu-nl aka region-country. (local)")); | |
rl.question(q, apiName => { | |
ob.API_NAME = apiName.toLowerCase(); | |
if (!apiName || apiName === "local") ob.API_NAME = "local"; | |
console.log(Bright("\nOne last thing: would you like to enable CORS? It allows other websites and extensions to use your instance's API.\ny/n (n)")); | |
rl.question(q, apiCors => { | |
let answCors = apiCors.toLowerCase().trim(); | |
if (answCors !== "y" && answCors !== "yes") ob.CORS_WILDCARD = '0' | |
final() | |
}) | |
}) | |
}); | |
}) | |
break; | |
case 'web': | |
console.log(Bright("\nAwesome! What's the domain this web app instance will be running on? (localhost)\nExample: cobalt.tools")); | |
rl.question(q, webURL => { | |
ob.WEB_URL = `http://localhost:9001/`; | |
ob.WEB_PORT = 9001; | |
if (webURL && webURL !== "localhost") ob.WEB_URL = `https://${webURL.toLowerCase()}/`; | |
console.log( | |
Bright("\nGreat! Now, what port will it be running on? (9001)") | |
) | |
rl.question(q, webPort => { | |
if (webPort) ob.WEB_PORT = webPort; | |
if (webPort && (webURL === "localhost" || !webURL)) ob.WEB_URL = `http://localhost:${webPort}/`; | |
console.log( | |
Bright("\nOne last thing: what default API domain should be used? (api.cobalt.tools)\nIf it's hosted locally, make sure to include the port:") + Cyan(" localhost:9000") | |
); | |
rl.question(q, apiURL => { | |
ob.API_URL = `https://${apiURL.toLowerCase()}/`; | |
if (apiURL.includes(':')) ob.API_URL = `http://${apiURL.toLowerCase()}/`; | |
if (!apiURL) ob.API_URL = "https://api.cobalt.tools/"; | |
final() | |
}) | |
}); | |
}); | |
break; | |
default: | |
console.log(Bright("\nThis is not an option. Try again.")); | |
setup() | |
} | |
}) | |
} | |
setup() |