42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
import fs from 'fs'
|
|
import path from 'path'
|
|
import matter from 'gray-matter'
|
|
|
|
const SRC_DIR = '/home/andre/coden/Kniepunkt/Kniepunkt-Visuals'
|
|
const DEST_DIR = path.join(process.cwd(), 'public', 'images', 'kniepunkt')
|
|
const CONTENT_DIR = path.join(process.cwd(), 'content', 'kniepunkt')
|
|
|
|
if (!fs.existsSync(DEST_DIR)) {
|
|
fs.mkdirSync(DEST_DIR, { recursive: true })
|
|
}
|
|
|
|
const images = fs.readdirSync(SRC_DIR).filter(f => f.endsWith('.png'))
|
|
const mdFiles = fs.readdirSync(CONTENT_DIR).filter(f => f.endsWith('.md'))
|
|
|
|
images.forEach(img => {
|
|
// Extract number from image name
|
|
const match = img.match(/(\d{1,3})/)
|
|
if (!match) return
|
|
|
|
// Normalize number string to 3 digits (e.g., '1' -> '001', '12' -> '012')
|
|
const numStr = match[1].padStart(3, '0')
|
|
|
|
// Find matching markdown file
|
|
const mdFile = mdFiles.find(f => f.startsWith(numStr + '-'))
|
|
if (mdFile) {
|
|
// Copy image
|
|
const safeName = `${numStr}-cover.png`
|
|
fs.copyFileSync(path.join(SRC_DIR, img), path.join(DEST_DIR, safeName))
|
|
|
|
// Update frontmatter
|
|
const mdPath = path.join(CONTENT_DIR, mdFile)
|
|
const data = matter(fs.readFileSync(mdPath, 'utf8'))
|
|
data.data.image = `/images/kniepunkt/${safeName}`
|
|
|
|
fs.writeFileSync(mdPath, matter.stringify(data.content, data.data))
|
|
console.log(`Matched and updated: ${numStr}`)
|
|
} else {
|
|
console.log(`No markdown file found for image: ${img} (expected prefix ${numStr}-)`)
|
|
}
|
|
})
|