forked from tsai/budibase
1 changed files with 43 additions and 28 deletions
@ -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) { |
||||
// Set process.env
|
const key = `${ctx.params.key.toUpperCase()}_API_KEY` |
||||
const envKeyName = `${ctx.params.key.toUpperCase()}_API_KEY` |
const value = ctx.request.body.value |
||||
process.env[envKeyName] = ctx.request.body.value |
// Set process.env
|
||||
|
process.env[key] = 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}` |
||||
|
}) |
||||
|
readInterface.on("close", function() { |
||||
|
// Write file here
|
||||
|
if (!keyExists) { |
||||
|
// 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) |
||||
|
}) |
||||
} |
} |
||||
|
|
||||
async function extractKeys(content) { |
|
||||
const lines = content.split(/\r?\n/) |
|
||||
console.log(lines) |
|
||||
// Extract keys here
|
|
||||
return lines |
|
||||
} |
|
||||
Loading…
Reference in new issue