Native Wiki Generation
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user