Files
Lageplan/scripts/convert-icons.js

71 lines
2.2 KiB
JavaScript

/**
* Copy SVG icons from FEUKOS source to public/signaturen/
* Filters to German (_de) and universal (no _fr/_it suffix) files only
*/
const fs = require('fs')
const path = require('path')
const SOURCE_DIR = path.join(__dirname, '..', 'Signaturen', 'Markierungsmoglichkeiten', 'Markierungsmöglichkeiten Icons', 'SVG')
const OUTPUT_DIR = path.join(__dirname, '..', 'public', 'signaturen')
// Only German (_de) and universal (no _fr/_it suffix) files
function isRelevant(filename) {
if (!filename.endsWith('.svg')) return false
if (filename.match(/_fr\.svg$/i)) return false
if (filename.match(/_it\.svg$/i)) return false
return true
}
// Clean up name: remove _de/_DE suffix, replace underscores/hyphens with spaces
function cleanName(filename) {
let name = filename.replace('.svg', '')
name = name.replace(/_de$/i, '').replace(/_DE$/i, '').replace(/-de$/i, '')
return name.replace(/[_-]/g, ' ').replace(/\s+/g, ' ').trim()
}
function copyIcons() {
// Ensure output dir exists
if (!fs.existsSync(OUTPUT_DIR)) {
fs.mkdirSync(OUTPUT_DIR, { recursive: true })
}
// Clean old SVGs/PNGs from output dir
const oldFiles = fs.readdirSync(OUTPUT_DIR).filter(f => f.endsWith('.svg') || f.endsWith('.png'))
for (const f of oldFiles) {
fs.unlinkSync(path.join(OUTPUT_DIR, f))
}
console.log(`🗑️ Removed ${oldFiles.length} old files from ${OUTPUT_DIR}`)
const files = fs.readdirSync(SOURCE_DIR).filter(isRelevant).sort()
console.log(`📂 Found ${files.length} relevant SVG files`)
let copied = 0
for (const file of files) {
const inputPath = path.join(SOURCE_DIR, file)
const outputPath = path.join(OUTPUT_DIR, file)
try {
fs.copyFileSync(inputPath, outputPath)
copied++
} catch (err) {
console.error(` ❌ Failed: ${file}:`, err.message)
}
}
console.log(`\n🎉 Done! Copied ${copied}/${files.length} SVG icons to ${OUTPUT_DIR}`)
// Generate a manifest file for the seed script
const manifest = files.map(f => ({
file: f,
name: cleanName(f),
originalFile: f,
}))
fs.writeFileSync(
path.join(OUTPUT_DIR, 'manifest.json'),
JSON.stringify(manifest, null, 2)
)
console.log(`📋 Manifest written with ${manifest.length} entries`)
}
copyIcons()