use utility to get homedir instead of manually doing it

This commit is contained in:
kevmodrome 2020-07-06 09:06:59 +02:00
parent acc2acddba
commit b729527192
No known key found for this signature in database
GPG Key ID: E8F9CD141E63BF38
1 changed files with 48 additions and 33 deletions

View File

@ -1,37 +1,52 @@
const fs = require("fs") const fs = require("fs")
const ENV_FILE_PATH = ".budibase/.env" const readline = require("readline")
const { budibaseAppsDir } = require("../../utilities/budibaseDir")
const ENV_FILE_PATH = "/.env"
exports.fetch = async function(ctx) { exports.fetch = async function(ctx) {
ctx.status = 200 ctx.status = 200
ctx.body = { ctx.body = {
budibase: process.env.BUDIBASE_API_KEY, budibase: process.env.BUDIBASE_API_KEY,
sendgrid: process.env.SENDGRID_API_KEY sendgrid: process.env.SENDGRID_API_KEY,
} }
} }
exports.update = async function(ctx) { exports.update = async function(ctx) {
const key = `${ctx.params.key.toUpperCase()}_API_KEY`
const value = ctx.request.body.value
// Set process.env // Set process.env
const envKeyName = `${ctx.params.key.toUpperCase()}_API_KEY` process.env[key] = value
process.env[envKeyName] = ctx.request.body.value
// Write to file // Write to file
// TODO await updateValues([key, value])
ctx.status = 200 ctx.status = 200
ctx.message = `Updated ${ctx.params.key} API key succesfully.` ctx.message = `Updated ${ctx.params.key} API key succesfully.`
ctx.body = { [ctx.params.key]: ctx.request.body.value } ctx.body = { [ctx.params.key]: ctx.request.body.value }
} }
async function getEnvironmentVariables() { async function updateValues([key, value]) {
const home = require('os').homedir(); let newContent = ""
const filePath = `${home}/${ENV_FILE_PATH}` let keyExists = false
const readInterface = readline.createInterface({
return data = fs.readFileSync(filePath, 'utf8'); input: fs.createReadStream(`${budibaseAppsDir()}/${ENV_FILE_PATH}`),
output: process.stdout,
console: false,
})
readInterface.on("line", function(line) {
// Mutate lines and change API Key
if (line.startsWith(key)) {
line = `${key}=${value}`
keyExists = true
} }
newContent = `${newContent}\n${line}`
async function extractKeys(content) { })
const lines = content.split(/\r?\n/) readInterface.on("close", function() {
console.log(lines) // Write file here
// Extract keys here if (!keyExists) {
return lines // Add API Key if it doesn't exist in the file at all
newContent = `${newContent}\n${key}=${value}`
}
fs.writeFileSync(`${budibaseAppsDir()}/${ENV_FILE_PATH}`, newContent)
})
} }