#!/usr/bin/env node import { mkdir, readFile } from 'node:fs/promises' import path from 'node:path' import sharp from 'sharp' import { fileURLToPath } from 'node:url' const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) const rootDir = path.resolve(__dirname, '..') const logoSrc = path.join(rootDir, 'public', 'images', 'logos', 'Harheimer TC.svg') const outDir = path.join(rootDir, 'android-app', 'playstore-assets', 'generated') const iconOut = path.join(outDir, 'playstore-icon-512.png') const featureOut = path.join(outDir, 'playstore-feature-graphic-1024x500.png') const featureOverlaySvg = ` Harheimer TC Tischtennis in Frankfurt-Harheim ` async function generateAssets() { await mkdir(outDir, { recursive: true }) const logoBuffer = await readFile(logoSrc) const resizedLogoForIcon = await sharp(logoBuffer) .resize(440, 440, { fit: 'contain' }) .png() .toBuffer() await sharp({ create: { width: 512, height: 512, channels: 4, background: { r: 0, g: 0, b: 0, alpha: 0 }, }, }) .composite([{ input: resizedLogoForIcon, gravity: 'center' }]) .png() .toFile(iconOut) const resizedLogoForFeature = await sharp(logoBuffer) .resize(320, 320, { fit: 'contain' }) .png() .toBuffer() await sharp(Buffer.from(featureOverlaySvg)) .composite([{ input: resizedLogoForFeature, left: 72, top: 90 }]) .png() .toFile(featureOut) console.log(`Fertig. Assets erzeugt in: ${outDir}`) console.log(`- ${path.basename(iconOut)}`) console.log(`- ${path.basename(featureOut)}`) } generateAssets().catch((error) => { console.error('Fehler bei der Asset-Generierung:', error) process.exitCode = 1 })