diff options
| author | Gab Virebent <gabriel1@virebent.art> | 2026-07-07 16:24:28 +0200 |
|---|---|---|
| committer | Gab Virebent <gabriel1@virebent.art> | 2026-07-07 16:24:28 +0200 |
| commit | 37f156c30e2a2b01c840d39f0dd2bdbf811732d6 (patch) | |
| tree | e2ce84dc7f88ce0eb312899448f91b7bb93ca8a3 /internal/cms/types.go | |
| download | gemcms-37f156c30e2a2b01c840d39f0dd2bdbf811732d6.tar.gz gemcms-37f156c30e2a2b01c840d39f0dd2bdbf811732d6.tar.xz gemcms-37f156c30e2a2b01c840d39f0dd2bdbf811732d6.zip | |
Diffstat (limited to 'internal/cms/types.go')
| -rw-r--r-- | internal/cms/types.go | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/internal/cms/types.go b/internal/cms/types.go new file mode 100644 index 0000000..3d72f7b --- /dev/null +++ b/internal/cms/types.go @@ -0,0 +1,174 @@ +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 +} |
