#!/usr/bin/env node
/**
 * Script pour gérer PostCSS pendant les tests
 * Renomme temporairement postcss.config.mjs pour éviter les erreurs Vitest
 */

const fs = require('fs');
const path = require('path');
const { spawn } = require('child_process');

const postcssConfigPath = path.join(process.cwd(), 'postcss.config.mjs');
const postcssConfigBackupPath = path.join(
  process.cwd(),
  'postcss.config.mjs.testbak'
);

// Fonction pour restaurer le fichier
function restorePostCSS() {
  if (fs.existsSync(postcssConfigBackupPath)) {
    fs.renameSync(postcssConfigBackupPath, postcssConfigPath);
    console.log('✓ PostCSS config restauré');
  }
}

// Renommer le fichier PostCSS avant les tests
if (fs.existsSync(postcssConfigPath)) {
  fs.renameSync(postcssConfigPath, postcssConfigBackupPath);
  console.log('✓ PostCSS config temporairement désactivé pour les tests');

  // Lancer Vitest avec reporter verbose pour plus de détails
  const vitest = spawn('pnpm', ['vitest', '--run', '--reporter=verbose'], {
    stdio: 'inherit',
  });

  // Restaurer le fichier après que Vitest ait terminé
  vitest.on('close', (code) => {
    restorePostCSS();
    process.exit(code || 0);
  });

  // Gérer les signaux d'interruption
  process.on('SIGINT', () => {
    vitest.kill('SIGINT');
    restorePostCSS();
    process.exit(0);
  });

  process.on('SIGTERM', () => {
    vitest.kill('SIGTERM');
    restorePostCSS();
    process.exit(0);
  });
} else {
  // Si le fichier n'existe pas, lancer Vitest directement
  const vitest = spawn('pnpm', ['vitest', '--run'], {
    stdio: 'inherit',
  });

  vitest.on('close', (code) => {
    process.exit(code || 0);
  });
}
