arnaucube
arnaucube/mirror-to-giteaPublic Self-hosted repository
mirror-to-gitea/internal/config/read.go
internal/config/read.goRaw
 1package config
 2
 3import (
 4	"errors"
 5	"os"
 6)
 7
 8const MirrorModePublic = "PUBLIC"
 9const MirrorModePrivateAndPublic = "PRIVATE_AND_PUBLIC"
10
11type Config struct {
12	MirrorMode string
13	Gitea      GiteaConfig
14}
15
16type GiteaConfig struct {
17	GiteaUrl   string
18	GiteaToken string
19}
20
21func Read() (*Config, error) {
22	mirrorMode, err := readMirrorMode()
23	if err != nil {
24		return nil, err
25	}
26
27	gitea, err := readGiteaConfig()
28	if err != nil {
29		return nil, err
30	}
31
32	return &Config{
33		MirrorMode: mirrorMode,
34		Gitea:      gitea,
35	}, nil
36}
37
38func readGiteaConfig() (GiteaConfig, error) {
39	url, a := os.LookupEnv("GITEA_URL")
40	if !a {
41		return GiteaConfig{}, errors.New("")
42	}
43
44	token, a := os.LookupEnv("GITEA_TOKEN")
45	if !a {
46		return GiteaConfig{}, errors.New("")
47	}
48
49	return GiteaConfig{
50		GiteaUrl:   url,
51		GiteaToken: token,
52	}, nil
53
54}
55
56func readMirrorMode() (string, error) {
57	input, present := os.LookupEnv("MIRROR_MODE")
58
59	if !present {
60		return MirrorModePublic, nil
61	}
62
63	switch input {
64	case MirrorModePublic, MirrorModePrivateAndPublic:
65		return input, nil
66	default:
67		return "", errors.New("")
68	}
69
70}