ci: migrate GitHub actions to Gitea actions
Deploy CV Site (andreknie.de) / deploy (push) Canceled after 0s
Deploy CV Site (andreknie.de) / deploy (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import matter from 'gray-matter'
|
||||
|
||||
const CONTENT_DIR = path.join(process.cwd(), 'content')
|
||||
const KNIEPUNKT_DIR = path.join(CONTENT_DIR, 'kniepunkt')
|
||||
const POSTS_DIR = path.join(CONTENT_DIR, 'posts')
|
||||
|
||||
function getFiles(dir) {
|
||||
return fs.readdirSync(dir).map(f => path.join(dir, f)).filter(f => f.endsWith('.md'))
|
||||
}
|
||||
|
||||
const allPosts = getFiles(POSTS_DIR)
|
||||
const allKniepunkte = getFiles(KNIEPUNKT_DIR)
|
||||
const all = [...allPosts, ...allKniepunkte]
|
||||
|
||||
function mergeFiles(headerPath, articlePath, outputPath, issueNum, issueDate) {
|
||||
if (fs.existsSync(headerPath) && fs.existsSync(articlePath)) {
|
||||
const headerData = matter(fs.readFileSync(headerPath, 'utf8'))
|
||||
const articleData = matter(fs.readFileSync(articlePath, 'utf8'))
|
||||
|
||||
// Combine
|
||||
const mergedContent = headerData.content.trim() + '\n\n---\n\n' + articleData.content.trim()
|
||||
|
||||
// Update frontmatter
|
||||
articleData.data.title = `Kniepunkt 0${issueNum}: ` + articleData.data.title.replace(/^Kniepunkt \d+: /, '')
|
||||
if (issueDate) articleData.data.date = issueDate
|
||||
|
||||
fs.writeFileSync(outputPath, matter.stringify(mergedContent, articleData.data))
|
||||
|
||||
// Delete old
|
||||
if (headerPath !== outputPath && fs.existsSync(headerPath)) fs.unlinkSync(headerPath)
|
||||
if (articlePath !== outputPath && fs.existsSync(articlePath)) fs.unlinkSync(articlePath)
|
||||
console.log(`Merged 0${issueNum} to ${path.basename(outputPath)}`)
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Merge 029
|
||||
const article029 = allKniepunkte.find(f => f.includes('029-ki-nudelsuppe'))
|
||||
const h29 = allPosts.find(f => fs.existsSync(f) && fs.readFileSync(f, 'utf8').includes('Nudelsuppe')) || allKniepunkte.find(f => fs.existsSync(f) && path.basename(f).includes('29.md'))
|
||||
if (h29 && article029) mergeFiles(h29, article029, path.join(KNIEPUNKT_DIR, '029-ki-nudelsuppe.md'), 29)
|
||||
|
||||
// 4. Merge 031
|
||||
const header031 = all.find(f => f.includes('031-ist-da'))
|
||||
const article031 = all.find(f => f.includes('031-ki-verkaeufer-statt-ki-spielberg')) || path.join(KNIEPUNKT_DIR, '031-ki-verkaeufer-statt-ki-spielberg.md')
|
||||
if (fs.existsSync(header031) && fs.existsSync(article031)) {
|
||||
mergeFiles(header031, article031, path.join(KNIEPUNKT_DIR, '031-ki-verkaeufer-statt-ki-spielberg.md'), 31)
|
||||
} else {
|
||||
console.log(`Could not find 031 files`)
|
||||
}
|
||||
|
||||
// 5. Rename 002-006 and move to kniepunkt
|
||||
const renames = [
|
||||
{ match: '2025-09-06-ki-als-fitnessstudio', newName: '002-ki-als-fitnessstudio-abo.md', issue: 2 },
|
||||
{ match: '2025-09-12-wird-ki-wirklich-alle-jobs-uebernehmen', newName: '003-wird-ki-wirklich-alle-jobs-uebernehmen.md', issue: 3 },
|
||||
{ match: '2025-09-20-die-ki-wetterkarte', newName: '004-die-ki-wetterkarte.md', issue: 4 },
|
||||
{ match: '2025-09-26-enough-let-s-move-on', newName: '005-enough-lets-move-on.md', issue: 5 },
|
||||
{ match: '2025-10-10-zwischen-gigafactories', newName: '006-zwischen-gigafactories.md', issue: 6 }
|
||||
]
|
||||
|
||||
renames.forEach(r => {
|
||||
const f = allPosts.find(x => fs.existsSync(x) && x.includes(r.match))
|
||||
if (f) {
|
||||
const m = matter(fs.readFileSync(f, 'utf8'))
|
||||
m.data.title = `Kniepunkt 00${r.issue}: ` + m.data.title
|
||||
m.data.issue = r.issue
|
||||
const out = path.join(KNIEPUNKT_DIR, r.newName)
|
||||
fs.writeFileSync(out, matter.stringify(m.content, m.data))
|
||||
fs.unlinkSync(f)
|
||||
console.log(`Moved ${r.issue} to kniepunkt: ${r.newName}`)
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user