From 3fce6cea27d3e6129d6c06e528b62e1b11bf7094 Mon Sep 17 00:00:00 2001 From: Evan Senter Date: Sat, 19 Apr 2025 19:45:42 +0100 Subject: Starting to modularize into separate cli / server packages. (#55) * Starting to move a lot of code into packages/server * More of the massive refactor, builds and runs, some issues though. * Fixing outstanding issue with double messages. * Fixing a minor UI issue. * Fixing the build post-merge. * Running formatting. * Addressing comments. --- packages/server/src/config/config.ts | 65 ++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 packages/server/src/config/config.ts (limited to 'packages/server/src/config/config.ts') diff --git a/packages/server/src/config/config.ts b/packages/server/src/config/config.ts new file mode 100644 index 00000000..86cd7a6c --- /dev/null +++ b/packages/server/src/config/config.ts @@ -0,0 +1,65 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import * as dotenv from 'dotenv'; +import * as fs from 'node:fs'; +import * as path from 'node:path'; +import process from 'node:process'; + +export class Config { + private apiKey: string; + private model: string; + private targetDir: string; + + constructor(apiKey: string, model: string, targetDir: string) { + this.apiKey = apiKey; + this.model = model; + this.targetDir = targetDir; + } + + getApiKey(): string { + return this.apiKey; + } + + getModel(): string { + return this.model; + } + + getTargetDir(): string { + return this.targetDir; + } +} + +function findEnvFile(startDir: string): string | null { + let currentDir = path.resolve(startDir); + while (true) { + const envPath = path.join(currentDir, '.env'); + if (fs.existsSync(envPath)) { + return envPath; + } + const parentDir = path.dirname(currentDir); + if (parentDir === currentDir || !parentDir) { + return null; + } + currentDir = parentDir; + } +} + +export function loadEnvironment(): void { + const envFilePath = findEnvFile(process.cwd()); + if (!envFilePath) { + return; + } + dotenv.config({ path: envFilePath }); +} + +export function createServerConfig( + apiKey: string, + model: string, + targetDir: string, +): Config { + return new Config(apiKey, model, path.resolve(targetDir)); +} -- cgit v1.2.3