aboutsummaryrefslogtreecommitdiffsponsor
path: root/internal/service/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/service/config.go')
-rw-r--r--internal/service/config.go73
1 files changed, 0 insertions, 73 deletions
diff --git a/internal/service/config.go b/internal/service/config.go
deleted file mode 100644
index bcb9efc..0000000
--- a/internal/service/config.go
+++ /dev/null
@@ -1,73 +0,0 @@
-package service
-
-import (
- "encoding/json"
- "fmt"
- "os"
- "time"
-
- "dario.cat/mergo"
-)
-
-type Duration struct {
- time.Duration
-}
-
-func (s Duration) MarshalJSON() ([]byte, error) {
- return json.Marshal(s.Duration.String())
-}
-
-func (s *Duration) UnmarshalJSON(data []byte) error {
- var str string
- err := json.Unmarshal(data, &str)
- if err != nil {
- return err
- }
-
- v, err := time.ParseDuration(str)
- if err != nil {
- return err
- }
- *s = Duration{v}
-
- return nil
-}
-
-type Config struct {
- MaxInterval Duration `json:"max-interval,omitempty"`
- MinInterval Duration `json:"min-interval,omitempty"`
- Mirrors []*Mirror `json:"mirrors,omitempty"`
-}
-
-var DefaultConfig = Config{
- MaxInterval: Duration{24 * time.Hour},
- MinInterval: Duration{time.Hour},
-}
-
-func (c *Config) Apply(arg Config) {
- err := mergo.Merge(c, &arg)
- if err != nil {
- panic(err)
- }
-}
-
-// ApplyFileConfig loads the configuration described by the given yaml file.
-func ApplyFileConfig(cfg *Config, filePath string) error {
- var ret Config
-
- f, err := os.Open(filePath)
- if os.IsNotExist(err) {
- return nil
- } else if err != nil {
- return err
- }
- defer f.Close()
-
- err = json.NewDecoder(f).Decode(&ret)
- if err != nil {
- return fmt.Errorf("loading configuration file: %w", err)
- }
-
- cfg.Apply(ret)
- return nil
-}