Native Wiki Generation

This commit is contained in:
2026-04-11 12:21:29 +02:00
parent 29ddf8e3c5
commit bc708fc6b9
12 changed files with 1931 additions and 14 deletions
+46 -7
View File
@@ -149,10 +149,27 @@ func BuildNative(p *project.Project, progress func(string)) (BuildResult, error)
}
return BuildResult{}, fmt.Errorf("topdata validation failed with %d error(s)", report.ErrorCount())
}
return buildNativeUnchecked(p, progress)
var prebuiltWiki *wikiResult
if newestWikiSource, _, err := newestRelevantWikiSource(p.TopDataSourceDir()); err == nil && !newestWikiSource.IsZero() {
statePath := filepath.Join(p.TopDataSourceDir(), wikiRootDirName, wikiStateFileName)
outputDir := filepath.Join(p.TopDataSourceDir(), wikiRootDirName, wikiPagesDirName)
if stateInfo, err := os.Stat(statePath); err == nil && !newestWikiSource.After(stateInfo.ModTime()) {
if outputInfo, err := os.Stat(outputDir); err == nil && outputInfo.IsDir() {
if state, err := loadWikiState(statePath); err == nil {
prebuiltWiki = &wikiResult{
OutputDir: outputDir,
PageCount: state.Pages,
Status: wikiSkippedStatus,
Digest: state.Digest,
}
}
}
}
}
return buildNativeUnchecked(p, progress, prebuiltWiki)
}
func buildNativeUnchecked(p *project.Project, progress func(string)) (BuildResult, error) {
func buildNativeUnchecked(p *project.Project, progress func(string), prebuiltWiki *wikiResult) (BuildResult, error) {
if progress == nil {
progress = func(string) {}
}
@@ -306,12 +323,34 @@ func buildNativeUnchecked(p *project.Project, progress func(string)) (BuildResul
return BuildResult{}, err
}
wikiBuild := wikiResult{Status: wikiSkippedStatus}
if prebuiltWiki != nil {
wikiBuild = *prebuiltWiki
} else {
wikiBuild, err = buildWiki(p, BuildResult{
Mode: "native",
Output2DADir: output2DA,
OutputTLKDir: outputTLK,
Files2DA: files2DA,
FilesTLK: filesTLK,
}, progress)
if err != nil {
return BuildResult{}, err
}
if wikiBuild.PageCount > 0 && wikiBuild.Status == wikiSkippedStatus {
wikiBuild.Status = wikiGeneratedStatus
}
}
return BuildResult{
Mode: "native",
Output2DADir: output2DA,
OutputTLKDir: outputTLK,
Files2DA: files2DA,
FilesTLK: filesTLK,
Mode: "native",
Output2DADir: output2DA,
OutputTLKDir: outputTLK,
Files2DA: files2DA,
FilesTLK: filesTLK,
WikiOutputDir: wikiBuild.OutputDir,
WikiPages: wikiBuild.PageCount,
WikiStatus: wikiBuild.Status,
}, nil
}