Finishing up init with config building rather than downloading.
This commit is contained in:
parent
e0f4d05512
commit
3747b41452
|
@ -1 +1,4 @@
|
|||
node_modules/
|
||||
docker-compose.yaml
|
||||
envoy.yaml
|
||||
hosting.properties
|
||||
|
|
|
@ -10,7 +10,8 @@
|
|||
"chalk": "^4.1.0",
|
||||
"commander": "^7.1.0",
|
||||
"inquirer": "^8.0.0",
|
||||
"lookpath": "^1.1.0"
|
||||
"lookpath": "^1.1.0",
|
||||
"randomstring": "^1.1.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^7.20.0"
|
||||
|
|
|
@ -4,11 +4,11 @@ const { spawn } = require("child_process")
|
|||
const { lookpath } = require("lookpath")
|
||||
const { downloadFile } = require("../utils")
|
||||
const { confirmation } = require("../questions")
|
||||
const makeEnvFile = require("./makeEnv")
|
||||
|
||||
const FILE_URLS = [
|
||||
"https://raw.githubusercontent.com/Budibase/budibase/master/hosting/docker-compose.yaml",
|
||||
"https://raw.githubusercontent.com/Budibase/budibase/master/hosting/envoy.yaml",
|
||||
"https://github.com/Budibase/budibase/blob/master/hosting/hosting.properties"
|
||||
"https://raw.githubusercontent.com/Budibase/budibase/master/hosting/envoy.yaml"
|
||||
]
|
||||
|
||||
async function checkDockerConfigured() {
|
||||
|
@ -33,7 +33,7 @@ async function init() {
|
|||
promises.push(downloadFile(url, `./${fileName}`))
|
||||
}
|
||||
await Promise.all(promises)
|
||||
console.log("Files have been downloaded, ready to start.")
|
||||
await makeEnvFile()
|
||||
}
|
||||
|
||||
async function start() {
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
const { string, number } = require("../questions")
|
||||
const { getSuccess } = require("../utils")
|
||||
const fs = require("fs")
|
||||
const path = require("path")
|
||||
const randomString = require("randomstring")
|
||||
|
||||
const FILE_PATH = path.resolve("./.env")
|
||||
|
||||
function getContents(port, hostingKey) {
|
||||
return `
|
||||
# Use the main port in the builder for your self hosting URL, e.g. localhost:10000
|
||||
MAIN_PORT=${port}
|
||||
|
||||
# Use this password when configuring your self hosting settings
|
||||
HOSTING_KEY=${hostingKey}
|
||||
|
||||
# This section contains all secrets pertaining to the system
|
||||
JWT_SECRET=${randomString.generate()}
|
||||
MINIO_ACCESS_KEY=${randomString.generate()}
|
||||
MINIO_SECRET_KEY=${randomString.generate()}
|
||||
COUCH_DB_PASSWORD=${randomString.generate()}
|
||||
COUCH_DB_USER=${randomString.generate()}
|
||||
|
||||
# This section contains variables that do not need to be altered under normal circumstances
|
||||
APP_PORT=4002
|
||||
WORKER_PORT=4003
|
||||
MINIO_PORT=4004
|
||||
COUCH_DB_PORT=4005
|
||||
BUDIBASE_ENVIRONMENT=PRODUCTION`
|
||||
}
|
||||
|
||||
module.exports = async () => {
|
||||
const hostingKey = await string("Please input the password you'd like to use as your hosting key: ")
|
||||
const hostingPort = await number("Please enter the port on which you want your installation to run: ", 10000)
|
||||
const fileContents = getContents(hostingKey, hostingPort)
|
||||
fs.writeFileSync(FILE_PATH, fileContents)
|
||||
console.log(getSuccess("Configuration has been written successfully - please check .env file for more details."))
|
||||
}
|
|
@ -9,3 +9,32 @@ exports.confirmation = async question => {
|
|||
}
|
||||
return (await inquirer.prompt(config)).confirmation
|
||||
}
|
||||
|
||||
exports.string = async (question, defaultString = null) => {
|
||||
const config = {
|
||||
type: "input",
|
||||
name: "string",
|
||||
message: question,
|
||||
}
|
||||
if (defaultString) {
|
||||
config.default = defaultString
|
||||
}
|
||||
return (await inquirer.prompt(config)).string
|
||||
}
|
||||
|
||||
exports.number = async (question, defaultNumber) => {
|
||||
const config = {
|
||||
type: "input",
|
||||
name: "number",
|
||||
message: question,
|
||||
validate: (value) => {
|
||||
let valid = !isNaN(parseFloat(value))
|
||||
return valid || "Please enter a number"
|
||||
},
|
||||
filter: Number,
|
||||
}
|
||||
if (defaultNumber) {
|
||||
config.default = defaultNumber
|
||||
}
|
||||
return (await inquirer.prompt(config)).number
|
||||
}
|
||||
|
|
|
@ -32,3 +32,7 @@ exports.getSubHelpDescription = string => {
|
|||
exports.getError = error => {
|
||||
return chalk.red(`Error - ${error}`)
|
||||
}
|
||||
|
||||
exports.getSuccess = success => {
|
||||
return chalk.green(success)
|
||||
}
|
||||
|
|
|
@ -107,6 +107,11 @@ argparse@^1.0.7:
|
|||
dependencies:
|
||||
sprintf-js "~1.0.2"
|
||||
|
||||
array-uniq@1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.2.tgz#5fcc373920775723cfd64d65c64bef53bf9eba6d"
|
||||
integrity sha1-X8w3OSB3VyPP1k1lxkvvU7+eum0=
|
||||
|
||||
astral-regex@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
|
||||
|
@ -685,6 +690,13 @@ punycode@^2.1.0:
|
|||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
||||
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
||||
|
||||
randomstring@^1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/randomstring/-/randomstring-1.1.5.tgz#6df0628f75cbd5932930d9fe3ab4e956a18518c3"
|
||||
integrity sha1-bfBij3XL1ZMpMNn+OrTpVqGFGMM=
|
||||
dependencies:
|
||||
array-uniq "1.0.2"
|
||||
|
||||
regexpp@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
|
||||
|
|
Loading…
Reference in New Issue