anything-llm/gcp/deployment/generate.mjs
Olusegun Ajose 284fe6f356
Adding GCP Deployment Template (#142)
* Adding GCP Deployment Manager Template

* Adding GCP Deployment Manager Template

* Adding GCP Deployment Manager Template

* Update gcp/deployment/DEPLOY.md

Co-authored-by: David Blore <42894467+DavidBlore@users.noreply.github.com>

* Update gcp/deployment/DEPLOY.md

Co-authored-by: David Blore <42894467+DavidBlore@users.noreply.github.com>

* Update gcp/deployment/DEPLOY.md

Co-authored-by: David Blore <42894467+DavidBlore@users.noreply.github.com>

* Update DEPLOY.md

* Update DEPLOY.md

* Update DEPLOY.md

---------

Co-authored-by: David Blore <42894467+DavidBlore@users.noreply.github.com>
2023-07-14 10:15:05 -07:00

62 lines
2.3 KiB
JavaScript

import fs from 'fs';
import { fileURLToPath } from 'url';
import path, { dirname } from 'path';
import { exit } from 'process';
const __dirname = dirname(fileURLToPath(import.meta.url));
const REPLACEMENT_KEY = '!SUB::USER::CONTENT!'
const envPath = path.resolve(__dirname, `../../docker/.env`)
const envFileExists = fs.existsSync(envPath);
const chalk = {
redBright: function (text) {
return `\x1b[31m${text}\x1b[0m`
},
cyan: function (text) {
return `\x1b[36m${text}\x1b[0m`
},
greenBright: function (text) {
return `\x1b[32m${text}\x1b[0m`
},
blueBright: function (text) {
return `\x1b[34m${text}\x1b[0m`
}
}
if (!envFileExists) {
console.log(chalk.redBright('[ABORT]'), 'You do not have an .env file in your ./docker/ folder. You need to create it first.');
console.log('You can start by running', chalk.cyan('cp -n ./docker/.env.example ./docker/.env'))
exit(1);
}
// Remove comments
// Remove UID,GID,etc
// Remove empty strings
// Split into array
const settings = fs.readFileSync(envPath, "utf8")
.replace(/^#.*\n?/gm, '')
.replace(/^UID.*\n?/gm, '')
.replace(/^GID.*\n?/gm, '')
.replace(/^CLOUD_BUILD.*\n?/gm, '')
.replace(/^\s*\n/gm, "")
.split('\n')
.filter((i) => !!i);
const formattedSettings = settings.map((i, index) => index === 0 ? i + '\n' : ' ' + i).join('\n');
// Read the existing GCP Deployment Manager template
const templatePath = path.resolve(__dirname, `gcp_deploy_anything_llm.yaml`);
const templateString = fs.readFileSync(templatePath, "utf8");
// Update the metadata section with the UserData content
const updatedTemplateString = templateString.replace(REPLACEMENT_KEY, formattedSettings);
// Save the updated GCP Deployment Manager template
const output = path.resolve(__dirname, `gcp_deploy_anything_llm_with_env.yaml`);
fs.writeFileSync(output, updatedTemplateString, "utf8");
console.log(chalk.greenBright('[SUCCESS]'), 'Deploy AnythingLLM on GCP Deployment Manager using your template document.');
console.log(chalk.greenBright('File Created:'), 'gcp_deploy_anything_llm_with_env.yaml in the output directory.');
console.log(chalk.blueBright('[INFO]'), 'Refer to the GCP Deployment Manager documentation for how to use this file.');
exit();