import path from 'path'; import { readFile, writeFile } from 'fs/promises'; import fetch from 'node-fetch'; import { errors } from './../errors/index.js'; import CLIErrorHandler from './../utils/CLIErrorHandler.js'; import YAWN from './../utils/YAWN.js'; import { loadConfigFromYAML } from './../utils/loadConfigFromYAML.js'; export const save = async (options, program) => { await (async () => { const cwd = path.resolve(process.cwd()); console.log('Executing in cwd:'.green, `${cwd}`.yellow); // Load yaml configuration const configuration = await loadConfigFromYAML(options); const endpoint = options?.endpoint ?? configuration?.endpoint ?? 'http://localhost:8081'; const adminSecret = options?.adminSecret ?? configuration?.admin_secret ?? ''; const configurationFilePath = path.resolve(cwd, options.config, 'config.yaml'); const yawn = await readFile(configurationFilePath, 'utf8') .then((fileData) => { const result = new YAWN(fileData); console.log(`[yawn] Config`.green, `${configurationFilePath}`.yellow, `successfully loaded...`.green); return result; }) .catch((error) => { console.error(`[yawn] Config`.red, `${configurationFilePath.yellow}`, `errored out...`.red); // console.error(error); return undefined; }); yawn.json = { ...yawn.json, endpoint, admin_secret: adminSecret }; // console.log(yawn.yaml); await writeFile(configurationFilePath, yawn.yaml, 'utf-8') .then(() => { console.log( `[configuration saver] Config`.green, `${configurationFilePath}`.yellow, `successfully saved...`.green ); }) .catch((error) => { console.error(`[configuration saver] Config`.red, `${configurationFilePath.yellow}`, `errored out...`.red); // console.error(error); return undefined; }); console.log('Configuration updated!'); })() .then(() => {}) .catch(CLIErrorHandler(program)); }; export default save;