// Vector source for the twelve original zodiac mascots. PNG output works in both H5 and WeChat.
// Run with a locally installed sharp, or pass its module path as the first argument.
const path = require('node:path')
const fs = require('node:fs')
const sharp = require(process.argv[2] || 'sharp')
const output = path.resolve(__dirname, '../src/assets/zodiac')
const face = (fill, extra = '') => `${extra}`
const eyes = ``
const smile = ``
const art = {
rat: `${face('#e8e1f4')}${eyes}${smile}`,
ox: `${face('#efd6b0')}${eyes}`,
tiger: `${face('#ffd17d')}${eyes}${smile}`,
rabbit: `${face('#fff4d8')}${eyes}${smile}`,
dragon: `${face('#a1e2c3')}${eyes}`,
snake: ``,
horse: `${face('#dfb18b')}${eyes}`,
goat: `${face('#f7e6d0')}${eyes}${smile}`,
monkey: `${face('#bd9373')}${eyes}${smile}`,
rooster: `${face('#fff1ce')}${eyes}`,
dog: `${face('#eed1a9')}${eyes}${smile}`,
pig: `${face('#ffd3dc')}${eyes}`
}
async function main() {
fs.mkdirSync(output, { recursive: true })
for (const [name, content] of Object.entries(art)) {
const svg = ``
await sharp(Buffer.from(svg)).png().toFile(path.join(output, `${name}.png`))
}
console.log(`Rendered ${Object.keys(art).length} zodiac icons`)
}
main().catch((error) => { console.error(error); process.exitCode = 1 })