mirror of
https://github.com/arnaucube/mirror-to-gitea.git
synced 2026-02-07 03:26:45 +01:00
parse gitea and mirror mode config
This commit is contained in:
70
internal/config/read.go
Normal file
70
internal/config/read.go
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
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("")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
115
internal/config/read_test.go
Normal file
115
internal/config/read_test.go
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
package config_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/jaedle/mirror-to-gitea/internal/config"
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
const mirrorMode = "MIRROR_MODE"
|
||||||
|
const giteaUrl = "GITEA_URL"
|
||||||
|
const giteaToken = "GITEA_TOKEN"
|
||||||
|
|
||||||
|
const publicMirrorMode = "PUBLIC"
|
||||||
|
const privateAndPublicMirrorMode = "PRIVATE_AND_PUBLIC"
|
||||||
|
const unknownMirrorMode = "UNKNOWN"
|
||||||
|
|
||||||
|
var _ = Describe("Read", func() {
|
||||||
|
BeforeEach(func() {
|
||||||
|
os.Clearenv()
|
||||||
|
})
|
||||||
|
|
||||||
|
Context("Gitea", func() {
|
||||||
|
It("parses configuration", func() {
|
||||||
|
aValidEnv()
|
||||||
|
setEnv(giteaUrl, "https://gitea.url/api")
|
||||||
|
setEnv(giteaToken, "a-gitea-token")
|
||||||
|
|
||||||
|
c, err := config.Read()
|
||||||
|
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(c.Gitea.GiteaUrl).To(Equal("https://gitea.url/api"))
|
||||||
|
Expect(c.Gitea.GiteaToken).To(Equal("a-gitea-token"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("fails on missing gitea url", func() {
|
||||||
|
aValidEnv()
|
||||||
|
unsetEnv(giteaUrl)
|
||||||
|
|
||||||
|
c, err := config.Read()
|
||||||
|
|
||||||
|
Expect(err).To(HaveOccurred())
|
||||||
|
Expect(c).To(BeNil())
|
||||||
|
})
|
||||||
|
|
||||||
|
It("fails on missing gitea token", func() {
|
||||||
|
aValidEnv()
|
||||||
|
unsetEnv(giteaToken)
|
||||||
|
|
||||||
|
c, err := config.Read()
|
||||||
|
|
||||||
|
Expect(err).To(HaveOccurred())
|
||||||
|
Expect(c).To(BeNil())
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
Context("mirror mode", func() {
|
||||||
|
It("sets default mirror mode", func() {
|
||||||
|
aValidEnv()
|
||||||
|
unsetEnv(mirrorMode)
|
||||||
|
|
||||||
|
c, err := config.Read()
|
||||||
|
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(c.MirrorMode).To(Equal(config.MirrorModePublic))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("allows public mirror mode PUBLIC", func() {
|
||||||
|
aValidEnv()
|
||||||
|
setEnv(mirrorMode, publicMirrorMode)
|
||||||
|
|
||||||
|
c, err := config.Read()
|
||||||
|
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(c.MirrorMode).To(Equal(config.MirrorModePublic))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("allows mirror mode PRIVATE_AND_PUBLIC", func() {
|
||||||
|
aValidEnv()
|
||||||
|
setEnv(mirrorMode, privateAndPublicMirrorMode)
|
||||||
|
|
||||||
|
c, err := config.Read()
|
||||||
|
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(c.MirrorMode).To(Equal(config.MirrorModePrivateAndPublic))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("fails on unknown mirror mode", func() {
|
||||||
|
aValidEnv()
|
||||||
|
setEnv(mirrorMode, unknownMirrorMode)
|
||||||
|
|
||||||
|
c, err := config.Read()
|
||||||
|
|
||||||
|
Expect(err).To(HaveOccurred())
|
||||||
|
Expect(c).To(BeNil())
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
func setEnv(k string, v string) {
|
||||||
|
err := os.Setenv(k, v)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
}
|
||||||
|
|
||||||
|
func unsetEnv(k string) {
|
||||||
|
err := os.Unsetenv(k)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
}
|
||||||
|
|
||||||
|
func aValidEnv() {
|
||||||
|
setEnv(mirrorMode, "PUBLIC")
|
||||||
|
setEnv(giteaUrl, "https://gitea.url")
|
||||||
|
setEnv(giteaToken, "valid")
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user