import 'dotenv/config';
import { z } from 'zod';

const schema = z.object({
  DISCORD_BOT_TOKEN: z.string().min(20),
  DISCORD_CLIENT_ID: z.string().min(5),
  DISCORD_CLIENT_SECRET: z.string().min(10),
  PUBLIC_URL: z.url(),
  BASE_PATH: z.string().default('/vxgamesbot'),
  PORT: z.coerce.number().int().positive().default(3100),
  SESSION_SECRET: z.string().min(32),
  DATABASE_PATH: z.string().default('./data/vxbot.sqlite'),
  NODE_ENV: z.enum(['development', 'test', 'production']).default('development')
});

const parsed = schema.safeParse(process.env);
if (!parsed.success) {
  console.error('Configuration .env invalide :');
  console.error(z.prettifyError(parsed.error));
  process.exit(1);
}

const basePath = parsed.data.BASE_PATH === '/' ? '' : `/${parsed.data.BASE_PATH.replace(/^\/+|\/+$/g, '')}`;

export const env = {
  ...parsed.data,
  BASE_PATH: basePath,
  IS_PRODUCTION: parsed.data.NODE_ENV === 'production',
  OAUTH_REDIRECT_URI: `${parsed.data.PUBLIC_URL.replace(/\/$/, '')}/auth/callback`
};
