package config import ( "errors" "os" ) const MirrorModePublic = "PUBLIC" const MirrorModePrivateAndPublic = "PRIVATE_AND_PUBLIC" type Config struct { MirrorMode string Gitea GiteaConfig } type GiteaConfig struct { GiteaUrl string GiteaToken string } func Read() (*Config, error) { mirrorMode, err := readMirrorMode() if err != nil { return nil, err } gitea, err := readGiteaConfig() if err != nil { return nil, err } return &Config{ MirrorMode: mirrorMode, Gitea: gitea, }, nil } func readGiteaConfig() (GiteaConfig, error) { url, a := os.LookupEnv("GITEA_URL") if !a { return GiteaConfig{}, errors.New("") } token, a := os.LookupEnv("GITEA_TOKEN") if !a { return GiteaConfig{}, errors.New("") } return GiteaConfig{ GiteaUrl: url, GiteaToken: token, }, nil } func readMirrorMode() (string, error) { input, present := os.LookupEnv("MIRROR_MODE") if !present { return MirrorModePublic, nil } switch input { case MirrorModePublic, MirrorModePrivateAndPublic: return input, nil default: return "", errors.New("") } }