Unhardcode
This commit is contained in:
@@ -41,8 +41,13 @@ const (
|
||||
DefaultTopDataWikiNamespacesFile = "namespaces.yaml"
|
||||
DefaultTopDataWikiTablesFile = "tables.yaml"
|
||||
DefaultTopDataWikiVisibilityFile = "visibility.yaml"
|
||||
DefaultTopDataWikiDataFile = "data.yaml"
|
||||
DefaultTopDataWikiPagePathsFile = "wiki.yaml"
|
||||
DefaultTopDataWikiTemplatesDir = "templates"
|
||||
DefaultTopDataWikiPageTemplatesDir = "templates/pages"
|
||||
DefaultTopDataWikiManualSectionsDir = "manual-sections"
|
||||
DefaultTopDataWikiManualSectionsFile = "manual-sections/default.yaml"
|
||||
DefaultTopDataWikiPageIndexFile = "page-index.json"
|
||||
DefaultTopDataWikiStaleDefault = "report"
|
||||
DefaultTopDataWikiStaleLiveCleanup = "archive"
|
||||
DefaultTopDataWikiMarkerFormat = "html_comments"
|
||||
@@ -258,8 +263,13 @@ func (p *Project) EffectiveConfig() EffectiveConfig {
|
||||
NamespacesFile: defaultString(p.Config.TopData.Wiki.NamespacesFile, DefaultTopDataWikiNamespacesFile),
|
||||
TablesFile: defaultString(p.Config.TopData.Wiki.TablesFile, DefaultTopDataWikiTablesFile),
|
||||
VisibilityFile: defaultString(p.Config.TopData.Wiki.VisibilityFile, DefaultTopDataWikiVisibilityFile),
|
||||
DataFile: defaultString(p.Config.TopData.Wiki.DataFile, DefaultTopDataWikiDataFile),
|
||||
PagePathsFile: defaultString(p.Config.TopData.Wiki.PagePathsFile, DefaultTopDataWikiPagePathsFile),
|
||||
TemplatesDir: defaultString(p.Config.TopData.Wiki.TemplatesDir, DefaultTopDataWikiTemplatesDir),
|
||||
PageTemplatesDir: defaultWikiPageTemplatesDir(p.Config.TopData.Wiki),
|
||||
ManualSectionsDir: defaultString(p.Config.TopData.Wiki.ManualSectionsDir, DefaultTopDataWikiManualSectionsDir),
|
||||
ManualSectionsFile: defaultWikiManualSectionsFile(p.Config.TopData.Wiki),
|
||||
PageIndexFile: defaultString(p.Config.TopData.Wiki.PageIndexFile, DefaultTopDataWikiPageIndexFile),
|
||||
AlignmentLinks: p.Config.TopData.Wiki.AlignmentLinks,
|
||||
TitlePrefixMinLength: defaultInt(p.Config.TopData.Wiki.TitlePrefixMinLength, DefaultTopDataWikiTitlePrefixMinLength),
|
||||
StatusPages: defaultBoolPointer(p.Config.TopData.Wiki.StatusPages, DefaultTopDataWikiStatusPages),
|
||||
@@ -551,8 +561,13 @@ func markMissingDefaults(provenance ConfigProvenance) {
|
||||
"topdata.wiki.namespaces_file": DefaultTopDataWikiNamespacesFile,
|
||||
"topdata.wiki.tables_file": DefaultTopDataWikiTablesFile,
|
||||
"topdata.wiki.visibility_file": DefaultTopDataWikiVisibilityFile,
|
||||
"topdata.wiki.data_file": DefaultTopDataWikiDataFile,
|
||||
"topdata.wiki.page_paths_file": DefaultTopDataWikiPagePathsFile,
|
||||
"topdata.wiki.templates_dir": DefaultTopDataWikiTemplatesDir,
|
||||
"topdata.wiki.page_templates_dir": DefaultTopDataWikiPageTemplatesDir,
|
||||
"topdata.wiki.manual_sections_dir": DefaultTopDataWikiManualSectionsDir,
|
||||
"topdata.wiki.manual_sections_file": DefaultTopDataWikiManualSectionsFile,
|
||||
"topdata.wiki.page_index_file": DefaultTopDataWikiPageIndexFile,
|
||||
"topdata.wiki.title_prefix_min_length": "3",
|
||||
"topdata.wiki.status_pages": "true",
|
||||
"topdata.wiki.status_listing_scope": DefaultTopDataWikiStatusListingScope,
|
||||
@@ -618,6 +633,26 @@ func defaultStringSlice(value, fallback []string) []string {
|
||||
return slices.Clone(value)
|
||||
}
|
||||
|
||||
func defaultWikiPageTemplatesDir(cfg TopDataWikiConfig) string {
|
||||
if strings.TrimSpace(cfg.PageTemplatesDir) != "" {
|
||||
return strings.TrimSpace(cfg.PageTemplatesDir)
|
||||
}
|
||||
if strings.TrimSpace(cfg.TemplatesDir) != "" {
|
||||
return filepath.ToSlash(filepath.Join(filepath.FromSlash(strings.TrimSpace(cfg.TemplatesDir)), "pages"))
|
||||
}
|
||||
return DefaultTopDataWikiPageTemplatesDir
|
||||
}
|
||||
|
||||
func defaultWikiManualSectionsFile(cfg TopDataWikiConfig) string {
|
||||
if strings.TrimSpace(cfg.ManualSectionsFile) != "" {
|
||||
return strings.TrimSpace(cfg.ManualSectionsFile)
|
||||
}
|
||||
if strings.TrimSpace(cfg.ManualSectionsDir) != "" {
|
||||
return filepath.ToSlash(filepath.Join(filepath.FromSlash(strings.TrimSpace(cfg.ManualSectionsDir)), "default.yaml"))
|
||||
}
|
||||
return DefaultTopDataWikiManualSectionsFile
|
||||
}
|
||||
|
||||
func defaultRequiredFields(configured map[string][]string) map[string][]string {
|
||||
if len(configured) > 0 {
|
||||
return cloneStringSliceMap(normalizeRequiredFields(configured))
|
||||
|
||||
@@ -277,8 +277,13 @@ type TopDataWikiConfig struct {
|
||||
NamespacesFile string `json:"namespaces_file" yaml:"namespaces_file"`
|
||||
TablesFile string `json:"tables_file" yaml:"tables_file"`
|
||||
VisibilityFile string `json:"visibility_file" yaml:"visibility_file"`
|
||||
DataFile string `json:"data_file" yaml:"data_file"`
|
||||
PagePathsFile string `json:"page_paths_file" yaml:"page_paths_file"`
|
||||
TemplatesDir string `json:"templates_dir" yaml:"templates_dir"`
|
||||
PageTemplatesDir string `json:"page_templates_dir" yaml:"page_templates_dir"`
|
||||
ManualSectionsDir string `json:"manual_sections_dir" yaml:"manual_sections_dir"`
|
||||
ManualSectionsFile string `json:"manual_sections_file" yaml:"manual_sections_file"`
|
||||
PageIndexFile string `json:"page_index_file" yaml:"page_index_file"`
|
||||
AlignmentLinks TopDataWikiAlignmentLinks `json:"alignment_links" yaml:"alignment_links"`
|
||||
TitlePrefixMinLength int `json:"title_prefix_min_length" yaml:"title_prefix_min_length"`
|
||||
StatusPages *bool `json:"status_pages,omitempty" yaml:"status_pages,omitempty"`
|
||||
@@ -587,8 +592,17 @@ func (p *Project) ValidateLayout() error {
|
||||
"topdata.wiki.state_file": p.Config.TopData.Wiki.StateFile,
|
||||
"topdata.wiki.deploy_manifest": p.Config.TopData.Wiki.DeployManifest,
|
||||
"topdata.wiki.deploy_edit_summary": p.Config.TopData.Wiki.DeployEditSummary,
|
||||
"topdata.wiki.source": p.Config.TopData.Wiki.Source,
|
||||
"topdata.wiki.namespaces_file": p.Config.TopData.Wiki.NamespacesFile,
|
||||
"topdata.wiki.tables_file": p.Config.TopData.Wiki.TablesFile,
|
||||
"topdata.wiki.visibility_file": p.Config.TopData.Wiki.VisibilityFile,
|
||||
"topdata.wiki.data_file": p.Config.TopData.Wiki.DataFile,
|
||||
"topdata.wiki.page_paths_file": p.Config.TopData.Wiki.PagePathsFile,
|
||||
"topdata.wiki.templates_dir": p.Config.TopData.Wiki.TemplatesDir,
|
||||
"topdata.wiki.page_templates_dir": p.Config.TopData.Wiki.PageTemplatesDir,
|
||||
"topdata.wiki.manual_sections_dir": p.Config.TopData.Wiki.ManualSectionsDir,
|
||||
"topdata.wiki.manual_sections_file": p.Config.TopData.Wiki.ManualSectionsFile,
|
||||
"topdata.wiki.page_index_file": p.Config.TopData.Wiki.PageIndexFile,
|
||||
"extract.layout": p.Config.Extract.Layout,
|
||||
"extract.hak_discovery": p.Config.Extract.HAKDiscovery,
|
||||
"autogen.cache.root": p.Config.Autogen.Cache.Root,
|
||||
@@ -627,8 +641,13 @@ func (p *Project) ValidateLayout() error {
|
||||
failures = append(failures, validateRelativePath("topdata.wiki.namespaces_file", effective.TopData.Wiki.NamespacesFile)...)
|
||||
failures = append(failures, validateRelativePath("topdata.wiki.tables_file", effective.TopData.Wiki.TablesFile)...)
|
||||
failures = append(failures, validateRelativePath("topdata.wiki.visibility_file", effective.TopData.Wiki.VisibilityFile)...)
|
||||
failures = append(failures, validateRelativePath("topdata.wiki.data_file", effective.TopData.Wiki.DataFile)...)
|
||||
failures = append(failures, validateRelativePath("topdata.wiki.page_paths_file", effective.TopData.Wiki.PagePathsFile)...)
|
||||
failures = append(failures, validateTreeRootPath("topdata.wiki.templates_dir", effective.TopData.Wiki.TemplatesDir)...)
|
||||
failures = append(failures, validateRelativePath("topdata.wiki.page_templates_dir", effective.TopData.Wiki.PageTemplatesDir)...)
|
||||
failures = append(failures, validateTreeRootPath("topdata.wiki.manual_sections_dir", effective.TopData.Wiki.ManualSectionsDir)...)
|
||||
failures = append(failures, validateRelativePath("topdata.wiki.manual_sections_file", effective.TopData.Wiki.ManualSectionsFile)...)
|
||||
failures = append(failures, validateRelativePath("topdata.wiki.page_index_file", effective.TopData.Wiki.PageIndexFile)...)
|
||||
failures = append(failures, validateRelativePath("autogen.cache.root", effective.Autogen.Cache.Root)...)
|
||||
if err := validateOutputFileName("outputs.module_archive", filepath.Base(effective.Outputs.ModuleArchive), ".mod"); err != nil {
|
||||
failures = append(failures, err)
|
||||
@@ -642,6 +661,9 @@ func (p *Project) ValidateLayout() error {
|
||||
if err := validateOutputFileName("topdata.wiki.deploy_manifest", filepath.Base(effective.TopData.Wiki.DeployManifest), ".json"); err != nil {
|
||||
failures = append(failures, err)
|
||||
}
|
||||
if err := validateOutputFileName("topdata.wiki.page_index_file", filepath.Base(effective.TopData.Wiki.PageIndexFile), ".json"); err != nil {
|
||||
failures = append(failures, err)
|
||||
}
|
||||
switch effective.TopData.Wiki.Renderer {
|
||||
case "nodebb_tiptap_html":
|
||||
default:
|
||||
@@ -1218,6 +1240,26 @@ func (p *Project) TopDataWikiStatePath() string {
|
||||
return filepath.Join(p.TopDataWikiRootDir(), filepath.FromSlash(p.EffectiveConfig().TopData.Wiki.StateFile))
|
||||
}
|
||||
|
||||
func (p *Project) TopDataWikiPageIndexPath() string {
|
||||
return filepath.Join(p.TopDataWikiRootDir(), filepath.FromSlash(p.EffectiveConfig().TopData.Wiki.PageIndexFile))
|
||||
}
|
||||
|
||||
func (p *Project) TopDataWikiDataPath() string {
|
||||
return filepath.Join(p.TopDataWikiSourceDir(), filepath.FromSlash(p.EffectiveConfig().TopData.Wiki.DataFile))
|
||||
}
|
||||
|
||||
func (p *Project) TopDataWikiPagePathsPath() string {
|
||||
return filepath.Join(p.TopDataWikiSourceDir(), filepath.FromSlash(p.EffectiveConfig().TopData.Wiki.PagePathsFile))
|
||||
}
|
||||
|
||||
func (p *Project) TopDataWikiPageTemplatesDir() string {
|
||||
return filepath.Join(p.TopDataWikiSourceDir(), filepath.FromSlash(p.EffectiveConfig().TopData.Wiki.PageTemplatesDir))
|
||||
}
|
||||
|
||||
func (p *Project) TopDataWikiManualSectionsPath() string {
|
||||
return filepath.Join(p.TopDataWikiSourceDir(), filepath.FromSlash(p.EffectiveConfig().TopData.Wiki.ManualSectionsFile))
|
||||
}
|
||||
|
||||
func (p *Project) TopDataPackageHAKName() string {
|
||||
return p.EffectiveConfig().TopData.PackageHAK
|
||||
}
|
||||
|
||||
@@ -432,6 +432,12 @@ topdata:
|
||||
output_root: docs
|
||||
pages_dir: pages
|
||||
state_file: wiki-state.json
|
||||
page_index_file: manifest/page-index.json
|
||||
source: docs-src/wiki
|
||||
data_file: providers/wiki-data.yaml
|
||||
page_paths_file: paths/wiki-paths.yaml
|
||||
page_templates_dir: page-fragments
|
||||
manual_sections_file: sections/defaults.yaml
|
||||
autogen:
|
||||
cache:
|
||||
root: "{paths.cache}/autogen"
|
||||
@@ -460,6 +466,21 @@ autogen:
|
||||
if got, want := proj.TopDataWikiStatePath(), filepath.Join(root, "cache", "docs", "wiki-state.json"); got != want {
|
||||
t.Fatalf("expected wiki state path %s, got %s", want, got)
|
||||
}
|
||||
if got, want := proj.TopDataWikiPageIndexPath(), filepath.Join(root, "cache", "docs", "manifest", "page-index.json"); got != want {
|
||||
t.Fatalf("expected wiki page-index path %s, got %s", want, got)
|
||||
}
|
||||
if got, want := proj.TopDataWikiDataPath(), filepath.Join(root, "docs-src", "wiki", "providers", "wiki-data.yaml"); got != want {
|
||||
t.Fatalf("expected wiki data path %s, got %s", want, got)
|
||||
}
|
||||
if got, want := proj.TopDataWikiPagePathsPath(), filepath.Join(root, "docs-src", "wiki", "paths", "wiki-paths.yaml"); got != want {
|
||||
t.Fatalf("expected wiki page paths path %s, got %s", want, got)
|
||||
}
|
||||
if got, want := proj.TopDataWikiPageTemplatesDir(), filepath.Join(root, "docs-src", "wiki", "page-fragments"); got != want {
|
||||
t.Fatalf("expected wiki page template path %s, got %s", want, got)
|
||||
}
|
||||
if got, want := proj.TopDataWikiManualSectionsPath(), filepath.Join(root, "docs-src", "wiki", "sections", "defaults.yaml"); got != want {
|
||||
t.Fatalf("expected wiki manual sections path %s, got %s", want, got)
|
||||
}
|
||||
if got, want := proj.AutogenCachePath("manifest.json"), filepath.Join(root, "cache", "autogen", "manifest.json"); got != want {
|
||||
t.Fatalf("expected autogen cache path %s, got %s", want, got)
|
||||
}
|
||||
@@ -1179,6 +1200,11 @@ func TestValidateLayoutRejectsInvalidTopDataWikiConfig(t *testing.T) {
|
||||
TablesFile: "../tables.yaml",
|
||||
VisibilityFile: "../visibility.yaml",
|
||||
TemplatesDir: ".",
|
||||
DataFile: "../data.yaml",
|
||||
PagePathsFile: "../wiki.yaml",
|
||||
PageTemplatesDir: "../templates/pages",
|
||||
ManualSectionsFile: "../manual/default.yaml",
|
||||
PageIndexFile: "../page-index.json",
|
||||
ManualSectionsDir: "../manual",
|
||||
StalePages: TopDataWikiStalePagesConfig{
|
||||
Default: "delete",
|
||||
@@ -1202,6 +1228,11 @@ func TestValidateLayoutRejectsInvalidTopDataWikiConfig(t *testing.T) {
|
||||
"topdata.wiki.tables_file",
|
||||
"topdata.wiki.visibility_file",
|
||||
"topdata.wiki.templates_dir",
|
||||
"topdata.wiki.data_file",
|
||||
"topdata.wiki.page_paths_file",
|
||||
"topdata.wiki.page_templates_dir",
|
||||
"topdata.wiki.manual_sections_file",
|
||||
"topdata.wiki.page_index_file",
|
||||
"topdata.wiki.manual_sections_dir",
|
||||
"topdata.wiki.stale_pages.default",
|
||||
"topdata.wiki.stale_pages.live_cleanup",
|
||||
|
||||
Reference in New Issue
Block a user