2023-10-29 22:02:07 +03:00
|
|
|
import * as fs from 'node:fs/promises'
|
|
|
|
|
|
|
|
console.info('Reading icons from "./src/assets/icons.svg"...')
|
|
|
|
const icons = await fs.readFile('./src/assets/icons.svg', { encoding: 'utf-8' })
|
2024-02-05 18:29:45 +03:00
|
|
|
const iconNames = icons.match(/(?<=<symbol id=")[^"]+/gm) ?? []
|
2023-10-29 22:02:07 +03:00
|
|
|
|
|
|
|
// All generated files MUST follow Prettier formatting.
|
|
|
|
console.info('Writing icon names to "./src/util/iconList.json"...')
|
|
|
|
await fs.writeFile('./src/util/iconList.json', JSON.stringify(iconNames, undefined, 2) + '\n')
|
|
|
|
console.info('Writing icon name type to "./src/util/iconName.ts"...')
|
|
|
|
await fs.writeFile(
|
|
|
|
'./src/util/iconName.ts',
|
|
|
|
`\
|
|
|
|
// Generated by \`scripts/generateIcons.js\`.
|
|
|
|
// Please run \`npm run generate\` to regenerate this file whenever \`icons.svg\` is changed.
|
2023-12-14 01:27:31 +03:00
|
|
|
import iconNames from '@/util/iconList.json'
|
|
|
|
|
2023-10-29 22:02:07 +03:00
|
|
|
export type Icon =
|
|
|
|
${iconNames?.map((name) => ` | '${name}'`).join('\n')}
|
2023-12-14 01:27:31 +03:00
|
|
|
|
|
|
|
export { iconNames }
|
|
|
|
|
|
|
|
const iconNamesSet = new Set(iconNames)
|
|
|
|
|
|
|
|
export function isIconName(value: string): value is Icon {
|
|
|
|
return iconNamesSet.has(value)
|
|
|
|
}
|
2023-10-29 22:02:07 +03:00
|
|
|
`,
|
|
|
|
)
|
|
|
|
console.info('Done.')
|