import * as fs from 'fs';
import * as path from 'path';
export interface EnvConfig {
host?: string;
port?: number;
database?: string;
username?: string;
apiKey?: string;
protocol?: 'http' | 'https';
autoConnect?: boolean;
}
/**
* Load configuration from .env file
*/
export function loadEnvConfig(): EnvConfig {
const envPath = path.join(process.cwd(), '.env');
if (!fs.existsSync(envPath)) {
return {};
}
try {
const envContent = fs.readFileSync(envPath, 'utf-8');
const config: EnvConfig = {};
envContent.split('\n').forEach(line => {
line = line.trim();
// Skip comments and empty lines
if (!line || line.startsWith('#')) {
return;
}
const [key, ...valueParts] = line.split('=');
const value = valueParts.join('=').trim();
switch (key.trim()) {
case 'ODOO_HOST':
config.host = value;
break;
case 'ODOO_PORT':
config.port = parseInt(value, 10);
break;
case 'ODOO_DATABASE':
config.database = value;
break;
case 'ODOO_USERNAME':
config.username = value;
break;
case 'ODOO_API_KEY':
config.apiKey = value;
break;
case 'ODOO_PROTOCOL':
config.protocol = value as 'http' | 'https';
break;
case 'ODOO_AUTO_CONNECT':
config.autoConnect = value.toLowerCase() === 'true';
break;
}
});
return config;
} catch (error) {
console.error('Error loading .env file:', error);
return {};
}
}
/**
* Check if env config has all required fields for connection
*/
export function hasCompleteConfig(config: EnvConfig): boolean {
return !!(
config.host &&
config.database &&
config.username &&
config.apiKey
);
}