summaryrefslogtreecommitdiffstats
path: root/pkg/config/user_config_validation.go
blob: ed248fc447484d098343f7f3f81e053acae0fe9f (plain)
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
package config

import (
	"fmt"
	"slices"
	"strings"
)

func (config *UserConfig) Validate() error {
	if err := validateEnum("gui.commitAuthorFormat", config.Gui.CommitAuthorFormat,
		[]string{"auto", "short", "full"}); err != nil {
		return err
	}

	if err := validateEnum("gui.statusPanelView", config.Gui.StatusPanelView,
		[]string{"dashboard", "allBranchesLog"}); err != nil {
		return err
	}
	if err := validateEnum("gui.showDivergenceFromBaseBranch", config.Gui.ShowDivergenceFromBaseBranch,
		[]string{"none", "onlyArrow", "arrowAndNumber"}); err != nil {
		return err
	}
	return nil
}

func validateEnum(name string, value string, allowedValues []string) error {
	if slices.Contains(allowedValues, value) {
		return nil
	}
	allowedValuesStr := strings.Join(allowedValues, ", ")
	return fmt.Errorf("Unexpected value '%s' for '%s'. Allowed values: %s", value, name, allowedValuesStr)
}