Generate list of redirects
This commit is contained in:
@ -13,6 +13,7 @@ extension Content {
|
||||
self.generateRequiredImages()
|
||||
self.results.recalculate()
|
||||
self.generateListOfExternalFiles()
|
||||
self.generateListOfUrlMappings()
|
||||
self.status("Generation completed")
|
||||
}
|
||||
}
|
||||
@ -240,6 +241,10 @@ extension Content {
|
||||
tag: tag)
|
||||
let generator = PostListPageGenerator(source: source)
|
||||
generator.createPages(for: posts)
|
||||
|
||||
if let originalUrl = tag.localized(in: language).originalUrl {
|
||||
results.redirect(from: originalUrl, to: tag.absoluteUrl(in: language))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -274,11 +279,16 @@ extension Content {
|
||||
return
|
||||
}
|
||||
|
||||
let path = page.absoluteUrl(in: language) + ".html"
|
||||
guard storage.write(content, to: path) else {
|
||||
let pageUrl = page.absoluteUrl(in: language)
|
||||
let filePath = pageUrl + ".html"
|
||||
guard storage.write(content, to: filePath) else {
|
||||
print("Failed to save page \(page.id)")
|
||||
return
|
||||
}
|
||||
|
||||
if let originalUrl = page.localized(in: language).originalUrl {
|
||||
results.redirect(from: originalUrl, to: pageUrl)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Additional infos
|
||||
@ -303,4 +313,27 @@ extension Content {
|
||||
|
||||
storage.write(content, to: externalFileListName)
|
||||
}
|
||||
|
||||
private var redirectsListFileName: String { "redirects.txt" }
|
||||
|
||||
private func generateListOfUrlMappings() {
|
||||
let redirects = results.redirects.map { "\($0.key) \($0.value);" }
|
||||
guard !redirects.isEmpty else {
|
||||
if storage.hasFileInOutputFolder(redirectsListFileName) {
|
||||
storage.deleteInOutputFolder(redirectsListFileName)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
let list = redirects.sorted().joined(separator: "\n ")
|
||||
|
||||
let content =
|
||||
"""
|
||||
map $request_uri $redirect_uri {
|
||||
\(list)
|
||||
}
|
||||
"""
|
||||
|
||||
storage.write(content, to: redirectsListFileName)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user