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}