Spaces:
Sleeping
Sleeping
| import * as fs from "fs"; | |
| import * as path from "path"; | |
| import { pathToFileURL } from "node:url"; | |
| import "load-env"; | |
| import logger from "logger"; | |
| import { openaiCompatibleModelsSafeParse } from "lib/ai/create-openai-compatiable"; | |
| const ROOT = process.cwd(); | |
| const FILE_NAME = "openai-compatible.config.ts"; | |
| const CONFIG_PATH = pathToFileURL(path.join(ROOT, FILE_NAME)).href; | |
| async function load() { | |
| try { | |
| const config = await import(CONFIG_PATH).then((m) => m.default); | |
| return openaiCompatibleModelsSafeParse(config); | |
| } catch (error) { | |
| logger.error(error); | |
| return []; | |
| } | |
| } | |
| /** | |
| * Reads a .env file, modifies a specific key's value, and writes it back. | |
| * | |
| * @param {string} envFilePath - The absolute path to the .env file. | |
| * @param {string} keyToModify - The key of the variable to add or edit (e.g., 'DATA'). | |
| * @param {string} newValue - The new value for the variable. | |
| * @returns {boolean} - True if successful, false otherwise. | |
| */ | |
| function updateEnvVariable( | |
| envFilePath: string, | |
| keyToModify: string, | |
| newValue: string, | |
| ): boolean { | |
| try { | |
| let envContent = ""; | |
| if (fs.existsSync(envFilePath)) { | |
| envContent = fs.readFileSync(envFilePath, "utf8"); | |
| } | |
| const envVars: { [key: string]: string } = {}; | |
| const lines = envContent.split("\n"); | |
| lines.forEach((line) => { | |
| const trimmedLine = line.trim(); | |
| if (trimmedLine.startsWith("#") || trimmedLine === "") { | |
| return; | |
| } | |
| const parts = trimmedLine.split("="); | |
| if (parts.length >= 2) { | |
| const key = parts[0]; | |
| const value = parts.slice(1).join("="); | |
| envVars[key] = value; | |
| } | |
| }); | |
| envVars[keyToModify] = newValue; | |
| let newEnvContent = ""; | |
| for (const key in envVars) { | |
| if (Object.prototype.hasOwnProperty.call(envVars, key)) { | |
| newEnvContent += `${key}=${envVars[key]}\n`; | |
| } | |
| } | |
| newEnvContent = newEnvContent.trim(); | |
| fs.writeFileSync(envFilePath, newEnvContent, "utf8"); | |
| console.log( | |
| `Successfully updated ${keyToModify} in ${envFilePath} to: \n\n${newValue}\n`, | |
| ); | |
| return true; | |
| } catch (error) { | |
| console.error(`Error updating .env file: ${error}`); | |
| return false; | |
| } | |
| } | |
| const envPath = path.join(ROOT, ".env"); | |
| const openaiCompatibleProviders = await load(); | |
| const success = updateEnvVariable( | |
| envPath, | |
| "OPENAI_COMPATIBLE_DATA", | |
| JSON.stringify(openaiCompatibleProviders), | |
| ); | |
| if (success) { | |
| console.log("Operation completed. Check your .env file!"); | |
| } else { | |
| console.log("Operation failed."); | |
| } | |