vapor-docs/fixSearchIndex.swift

63 lines
1.3 KiB
Swift
Executable File

#!/usr/bin/swift
import Foundation
struct SearchIndex: Codable {
let config: SearchIndexConfig
var docs: [SearchIndexDocs]
}
struct SearchIndexConfig: Codable {
let indexing: String?
let lang: [String]
let minSearchLength: Int?
let prebuildIndex: Bool?
let separator: String?
enum CodingKeys: String, CodingKey {
case indexing
case lang
case minSearchLength = "min_search_length"
case prebuildIndex = "prebuild_index"
case separator
}
}
struct SearchIndexDocs: Codable {
let location: String
let text: String
let title: String
}
let searchIndexPath = "site/search/search_index.json"
let fileURL = URL(fileURLWithPath: searchIndexPath)
let indexData = try Data(contentsOf: fileURL)
let searchIndex = try JSONDecoder().decode(SearchIndex.self, from: indexData)
var newSearchIndex = searchIndex
var searchIndexDocs = [SearchIndexDocs]()
let knownLanguages = [
"en",
"de",
"es",
"fr",
"it",
"ja",
"ko",
"nl",
"pl",
"zh",
].map { "\($0)/" }
for doc in newSearchIndex.docs {
if !knownLanguages.contains(where: { doc.location.starts(with: $0) }) {
searchIndexDocs.append(doc)
}
}
newSearchIndex.docs = searchIndexDocs
try JSONEncoder().encode(newSearchIndex).write(to: fileURL)