aboutsummaryrefslogtreecommitdiff
path: root/repository/config.go
blob: 0d6dbd5ee7297f49218080acf4718f5e8dbf1c24 (about) (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
package repository

import (
	"fmt"
	"os"

	"lindenii.org/go/furgit/config"
)

// parseRepositoryConfig loads the configuration of the repository through
// finding the config file in the repo root, and parses the config.
func parseRepositoryConfig(root *os.Root) (*config.Config, error) {
	configFile, err := root.Open("config")
	if err != nil {
		return nil, fmt.Errorf("repository: open config: %w", err)
	}

	defer func() { _ = configFile.Close() }()

	cfg, err := config.ParseConfig(configFile)
	if err != nil {
		return nil, fmt.Errorf("repository: parse config: %w", err)
	}

	return cfg, nil
}

// Config returns the parsed repository configuration snapshot.
//
// The returned pointer is owned by Repository. Callers should treat it as
// read-only.
func (repo *Repository) Config() *config.Config {
	return repo.config
}