Add initial image CLI runtime
This commit is contained in:
51
src/config.ts
Normal file
51
src/config.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
export type Config = {
|
||||
apiKey: string;
|
||||
baseURL: string;
|
||||
model: string;
|
||||
};
|
||||
|
||||
const DEFAULT_MODEL = "gemini-3.0-pro-image-landscape";
|
||||
|
||||
function getRequiredEnv(primaryName: string, fallbackName?: string): string {
|
||||
const primaryValue = Bun.env[primaryName]?.trim();
|
||||
|
||||
if (primaryValue) {
|
||||
return primaryValue;
|
||||
}
|
||||
|
||||
if (fallbackName) {
|
||||
const fallbackValue = Bun.env[fallbackName]?.trim();
|
||||
|
||||
if (fallbackValue) {
|
||||
return fallbackValue;
|
||||
}
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`Missing required environment variable: ${primaryName}${fallbackName ? ` (or ${fallbackName})` : ""}`,
|
||||
);
|
||||
}
|
||||
|
||||
export function normalizeBaseUrl(baseURL: string): string {
|
||||
const url = new URL(baseURL);
|
||||
|
||||
if (url.pathname === "" || url.pathname === "/") {
|
||||
url.pathname = "/v1";
|
||||
}
|
||||
|
||||
return url.toString().replace(/\/$/, "");
|
||||
}
|
||||
|
||||
export function loadConfig(): Config {
|
||||
return {
|
||||
apiKey: getRequiredEnv("FLOW2API_API_KEY", "OPENAI_API_KEY"),
|
||||
baseURL: normalizeBaseUrl(
|
||||
getRequiredEnv("FLOW2API_BASE_URL", "OPENAI_BASE_URL"),
|
||||
),
|
||||
model:
|
||||
Bun.env.FLOW2API_MODEL?.trim() ||
|
||||
Bun.env.GEMINI_MODEL?.trim() ||
|
||||
Bun.env.OPENAI_MODEL?.trim() ||
|
||||
DEFAULT_MODEL,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user