summaryrefslogtreecommitdiffstats
path: root/internal/cms/config.go
diff options
context:
space:
mode:
authorGab Virebent <gabriel1@virebent.art>2026-07-07 16:24:28 +0200
committerGab Virebent <gabriel1@virebent.art>2026-07-07 16:24:28 +0200
commit37f156c30e2a2b01c840d39f0dd2bdbf811732d6 (patch)
treee2ce84dc7f88ce0eb312899448f91b7bb93ca8a3 /internal/cms/config.go
downloadgemcms-37f156c30e2a2b01c840d39f0dd2bdbf811732d6.tar.gz
gemcms-37f156c30e2a2b01c840d39f0dd2bdbf811732d6.tar.xz
gemcms-37f156c30e2a2b01c840d39f0dd2bdbf811732d6.zip
Initial commitHEADmain
Diffstat (limited to 'internal/cms/config.go')
-rw-r--r--internal/cms/config.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/internal/cms/config.go b/internal/cms/config.go
new file mode 100644
index 0000000..de34a5c
--- /dev/null
+++ b/internal/cms/config.go
@@ -0,0 +1,40 @@
+package cms
+
+import (
+ "fmt"
+ "os"
+ "path/filepath"
+)
+
+func LoadConfig(root string) (Config, error) {
+ data, err := os.ReadFile(filepath.Join(root, "capsule.toml"))
+ if err != nil {
+ return Config{}, err
+ }
+ table, err := parseSimpleTable(string(data))
+ if err != nil {
+ return Config{}, fmt.Errorf("parse capsule.toml: %w", err)
+ }
+ cfg := Config{
+ Title: table.values["title"],
+ Host: table.values["host"],
+ Author: table.values["author"],
+ Language: table.values["language"],
+ Theme: table.values["theme"],
+ }
+ if cfg.Language == "" {
+ cfg.Language = "en"
+ }
+ if cfg.Theme == "" {
+ cfg.Theme = "default"
+ }
+ return cfg, nil
+}
+
+func renderConfig(cfg Config) string {
+ return "title = " + formatString(cfg.Title) + "\n" +
+ "host = " + formatString(cfg.Host) + "\n" +
+ "author = " + formatString(cfg.Author) + "\n" +
+ "language = " + formatString(cfg.Language) + "\n" +
+ "theme = " + formatString(cfg.Theme) + "\n"
+}