aboutsummaryrefslogtreecommitdiff
path: root/cmd/server/app.go
blob: 743a3890743113861aa7012baf2f328f372f58a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package main

import (
	"os"

	"gopkg.in/yaml.v3"
	"riedstra.dev/mitch/go-website/page"
)

var FeedPrefixDefault = ".feeds"

type App struct {
	ReIndexPath     string
	StaticDirectory string
	BaseTemplate    string
	DocumentSplit   string
	Suffix          string

	// 	Related to the Atom feed
	Title       string
	Description string // aka, "subtitle"
	Author      Author
	SiteURL     string
	FeedId      string
	Updated     page.PageTime
	FeedPrefix  string
}

func loadConf(fn string) (*App, error) {
	fh, err := os.Open(fn)
	if err != nil {
		return nil, err
	}
	dec := yaml.NewDecoder(fh)

	app := &App{}
	err = dec.Decode(app)
	if err != nil {
		return nil, err
	}

	if app.StaticDirectory == "" {
		app.StaticDirectory = "static"
	}
	if app.FeedPrefix == "" {
		app.FeedPrefix = FeedPrefixDefault
	}
	if app.BaseTemplate != "" {
		page.BaseTemplate = app.BaseTemplate
	}
	if app.DocumentSplit != "" {
		page.DocumentSplit = app.DocumentSplit
	}
	if app.Suffix != "" {
		page.Suffix = app.Suffix
	}

	page.Global = map[string]interface{}{
		"App": app,
	}

	return app, nil
}