// renders the dolly logo (public/apple-touch-icon.png) as ascii art
// and prints it, ready to paste into the hero.image.html <pre> in
// src/content/docs/index.mdx:
//
//   node scripts/gen-ascii-dolly.mjs
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import sharp from "sharp";

// monospace glyphs are roughly twice as tall as they are wide
const COLS = 46;
const ROWS = 23;
const RAMP = " .:-=+*#%@";

const root = join(dirname(fileURLToPath(import.meta.url)), "..");
const png = join(root, "public", "apple-touch-icon.png");

const { data, info } = await sharp(png)
  .resize(COLS, ROWS, { fit: "fill" })
  .ensureAlpha()
  .raw()
  .toBuffer({ resolveWithObject: true });

const lines = [];
for (let y = 0; y < info.height; y++) {
  let line = "";
  for (let x = 0; x < info.width; x++) {
    const alpha = data[(y * info.width + x) * 4 + 3];
    line += RAMP[Math.round((alpha / 255) * (RAMP.length - 1))];
  }
  lines.push(line.trimEnd());
}

console.log(lines.join("\n").replace(/^\n+|\n+$/g, ""));
