const chalk = require("chalk") const fs = require("fs") const axios = require("axios") const path = require("path") exports.downloadFile = async (url, filePath) => { filePath = path.resolve(filePath) const writer = fs.createWriteStream(filePath) const response = await axios({ url, method: "GET", responseType: "stream", }) response.data.pipe(writer) return new Promise((resolve, reject) => { writer.on("finish", resolve) writer.on("error", reject) }) } exports.getHelpDescription = (string) => { return chalk.cyan(string) } exports.getSubHelpDescription = (string) => { return chalk.green(string) } exports.error = (error) => { return chalk.red(`Error - ${error}`) } exports.success = (success) => { return chalk.green(success) } exports.info = (info) => { return chalk.cyan(info) } exports.logErrorToFile = (file, error) => { fs.writeFileSync(path.resolve(`./${file}`), `Budibase Error\n${error}`) } exports.parseEnv = (env) => { const lines = env.toString().split("\n") let result = {} for (const line of lines) { const match = line.match(/^([^=:#]+?)[=:](.*)/) if (match) { result[match[1].trim()] = match[2].trim() } } return result }