43 lines
1.9 KiB
Swift
43 lines
1.9 KiB
Swift
import Foundation
|
|
|
|
extension Content {
|
|
|
|
func generateFeed(for language: ContentLanguage, bookmarkKey: String) {
|
|
let posts = posts.map { $0.feedEntry(for: language) }
|
|
DispatchQueue.global(qos: .userInitiated).async {
|
|
|
|
let navigationItems: [FeedNavigationLink] = [
|
|
.init(text: .init(en: "Projects", de: "Projekte"),
|
|
url: .init(en: "/projects", de: "/projekte")),
|
|
.init(text: .init(en: "Adventures", de: "Abenteuer"),
|
|
url: .init(en: "/adventures", de: "/abenteuer")),
|
|
.init(text: .init(en: "Services", de: "Dienste"),
|
|
url: .init(en: "/services", de: "/dienste")),
|
|
.init(text: .init(en: "Tags", de: "Kategorien"),
|
|
url: .init(en: "/tags", de: "/kategorien")),
|
|
]
|
|
|
|
let feed = Feed(
|
|
language: language,
|
|
title: .init(en: "Blog | CH", de: "Blog | CH"),
|
|
description: .init(en: "The latests posts, projects and adventures",
|
|
de: "Die neusten Beiträge, Projekte und Abenteuer"),
|
|
iconDescription: .init(en: "An icon consisting of the letters C and H in blue and orange",
|
|
de: "Ein Logo aus den Buchstaben C und H in Blau und Orange"),
|
|
navigationItems: navigationItems,
|
|
posts: posts)
|
|
let fileContent = feed.content
|
|
Content.accessFolderFromBookmark(key: bookmarkKey) { folder in
|
|
let outputFile = folder.appendingPathComponent("feed.html", isDirectory: false)
|
|
do {
|
|
try fileContent
|
|
.data(using: .utf8)!
|
|
.write(to: outputFile)
|
|
} catch {
|
|
print("Failed to save: \(error)")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|