import path from 'path'
import fs from 'fs'
import sharp from 'sharp'
import { commandLogger } from '../utilities/logger'

export default async function tiles() {
  // Get all tiles
  const tilesDir = path.join(process.cwd(), 'public', 'tiles');
  const tiles = fs.readdirSync(tilesDir).filter((file) => file.endsWith('.png'));

  // Create output directory if it doesn't exist
  if (!fs.existsSync(tilesDir)) {
    fs.mkdirSync(tilesDir, { recursive: true });
  }

  for (const tile of tiles) {
    // Check if tile is already 66x34
    const metadata = await sharp(path.join(tilesDir, tile)).metadata();
    if (metadata.width === 66 && metadata.height === 34) {
      commandLogger.info(`Tile ${tile} already processed`);
      continue;
    }

    const inputPath = path.join(tilesDir, tile);
    const outputPath = path.join(tilesDir, tile);

    try {
      await sharp(inputPath)
        .resize({
          width: 66,
          height: 34,
          fit: 'fill',
          kernel: 'nearest'
        })
        .toFile(outputPath);

      commandLogger.info(`Processed: ${tile}`);
    } catch (error) {
      console.error(`Error processing ${tile}:`, error);
    }
  }

  commandLogger.info('Tile processing completed.');
}