package cms type Config struct { Title string Host string Author string Language string Theme string } type SiteOptions struct { Name string Title string Host string Author string Language string } type PageOptions struct { Slug string Title string Menu string } type ArticleOptions struct { Title string Section string Tags []string Draft bool Menu string } type AddOptions struct { Path string Type string Title string Slug string Section string Tags []string Draft bool Menu string } type AddReport struct { Documents []Document } type SectionOptions struct { Name string Title string } type WidgetOptions struct { Type string Name string Section string Limit int } type MenuItemOptions struct { Menu string Kind string Target string Label string URL string } type Document struct { Type string Slug string Title string Date string Section string Tags []string Draft bool Body string SourcePath string } type Menu struct { Name string Items []MenuItem } type MenuItem struct { Label string URL string } type Section struct { Name string Title string } type Widget struct { Name string Type string Section string Limit int } type Project struct { Root string Config Config Docs []Document Menus map[string]Menu Sections map[string]Section Widgets map[string]Widget } type BuildReport struct { OutputDir string FilesWritten int } type CheckReport struct { Issues []Issue } type StatusReport struct { Root string Config Config Pages int Articles int Drafts int Menus int Sections int Widgets int PublicFiles int Issues []Issue } type Issue struct { Level string Path string Message string } func (r CheckReport) HasErrors() bool { for _, issue := range r.Issues { if issue.Level == "ERROR" { return true } } return false } func (r StatusReport) ErrorCount() int { return countIssues(r.Issues, "ERROR") } func (r StatusReport) WarningCount() int { return countIssues(r.Issues, "WARN") } func (r StatusReport) Health() string { if r.ErrorCount() > 0 { return "ERROR" } if r.WarningCount() > 0 { return "WARN" } return "OK" } func countIssues(issues []Issue, level string) int { count := 0 for _, issue := range issues { if issue.Level == level { count++ } } return count }