const path = require('path');
const fs = require('fs-extra');

async function main() {
  try {
    console.log('Starting electron build process...');

    // Create dist directory if it doesn't exist
    const distElectronDir = path.resolve(__dirname, '../dist-electron');
    await fs.ensureDir(distElectronDir);

    // Copy web files
    const wwwDir = path.join(distElectronDir, 'www');
    await fs.ensureDir(wwwDir);
    await fs.copy('dist', wwwDir);

    // Copy and fix index.html
    const indexPath = path.join(wwwDir, 'index.html');
    let indexContent = await fs.readFile(indexPath, 'utf8');

    // More comprehensive path fixing
    indexContent = indexContent
      // Fix absolute paths to be relative
      .replace(/src="\//g, 'src="\./')
      .replace(/href="\//g, 'href="\./')
      // Fix modulepreload paths
      .replace(/<link [^>]*rel="modulepreload"[^>]*href="\/assets\//g, '<link rel="modulepreload" as="script" crossorigin="" href="./assets/')
      .replace(/<link [^>]*rel="modulepreload"[^>]*href="\.\/assets\//g, '<link rel="modulepreload" as="script" crossorigin="" href="./assets/')
      // Fix stylesheet paths
      .replace(/<link [^>]*rel="stylesheet"[^>]*href="\/assets\//g, '<link rel="stylesheet" crossorigin="" href="./assets/')
      .replace(/<link [^>]*rel="stylesheet"[^>]*href="\.\/assets\//g, '<link rel="stylesheet" crossorigin="" href="./assets/')
      // Fix script paths
      .replace(/src="\/assets\//g, 'src="./assets/')
      .replace(/src="\.\/assets\//g, 'src="./assets/')
      // Fix any remaining asset paths
      .replace(/(['"]\/?)(assets\/)/g, '"./assets/');

    // Debug output
    console.log('After path fixing, checking for remaining /assets/ paths:', indexContent.includes('/assets/'));
    console.log('Sample of fixed content:', indexContent.slice(0, 500));

    await fs.writeFile(indexPath, indexContent);
    
    console.log('Copied and fixed web files in:', wwwDir);

    // Copy main process files
    console.log('Copying main process files...');
    const mainProcessFiles = [
      ['src/electron/main.js', 'main.js'],
      ['src/electron/preload.js', 'preload.js']
    ];

    for (const [src, dest] of mainProcessFiles) {
      const destPath = path.join(distElectronDir, dest);
      console.log(`Copying ${src} to ${destPath}`);
      await fs.copy(src, destPath);
    }

    // Create package.json for production
    const devPackageJson = require('../package.json');
    const prodPackageJson = {
      name: devPackageJson.name,
      version: devPackageJson.version,
      description: devPackageJson.description,
      author: devPackageJson.author,
      main: 'main.js',
      private: true,
    };

    await fs.writeJson(
      path.join(distElectronDir, 'package.json'),
      prodPackageJson,
      { spaces: 2 }
    );

    // Verify the build
    console.log('\nVerifying build structure:');
    const files = await fs.readdir(distElectronDir);
    console.log('Files in dist-electron:', files);

    if (!files.includes('main.js')) {
      throw new Error('main.js not found in build directory');
    }
    if (!files.includes('preload.js')) {
      throw new Error('preload.js not found in build directory');
    }
    if (!files.includes('package.json')) {
      throw new Error('package.json not found in build directory');
    }

    console.log('Build completed successfully!');
  } catch (error) {
    console.error('Build failed:', error);
    process.exit(1);
  }
}

main();