diff options
| author | Paul Buetow <paul@buetow.org> | 2024-09-03 10:11:51 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-09-03 10:11:51 +0300 |
| commit | 3e33b52642b2b4d5a0c7a8d3a7a6bb269553be1f (patch) | |
| tree | 1fc4ef6c6cc98ec024b00d8874eec8e43485bef4 | |
| parent | c907dd82c9ba2e7b1924b9f4febba68f9b04a38d (diff) | |
Partners and Servers are now slices
| -rw-r--r-- | examples/gosd.json | 2 | ||||
| -rw-r--r-- | internal/client/tui/submit.go | 8 | ||||
| -rw-r--r-- | internal/config/client/client.go | 32 | ||||
| -rw-r--r-- | internal/config/server/server.go | 30 | ||||
| -rw-r--r-- | internal/server/repository/repository.go | 8 |
5 files changed, 26 insertions, 54 deletions
diff --git a/examples/gosd.json b/examples/gosd.json index 7e9c422..27fe548 100644 --- a/examples/gosd.json +++ b/examples/gosd.json @@ -1,6 +1,6 @@ { "ListenAddr": "127.0.0.1:8080", - "Partner": "partner1,partner2", + "Partners": ["partner1", "partner2"], "ApiKey": "", "DataDir": "./data", "EmailTo": "recipient@example.com", diff --git a/internal/client/tui/submit.go b/internal/client/tui/submit.go index 1277e73..0610036 100644 --- a/internal/client/tui/submit.go +++ b/internal/client/tui/submit.go @@ -2,6 +2,7 @@ package tui import ( "context" + "errors" "fmt" "log" "os" @@ -29,9 +30,8 @@ func submitEntryCmd(ctx context.Context, conf client.ClientConfig, composeFile s } func submitEntry(ctx context.Context, conf client.ClientConfig, composeFile string) error { - servers, err := conf.Servers() - if err != nil { - return err + if len(conf.Servers) == 0 { + return errors.New("no server configured") } ent, err := types.NewEntryFromTextFile(composeFile) @@ -39,7 +39,7 @@ func submitEntry(ctx context.Context, conf client.ClientConfig, composeFile stri return err } - if err := easyhttp.PostData(ctx, "submit", conf.APIKey, &ent, servers...); err != nil { + if err := easyhttp.PostData(ctx, "submit", conf.APIKey, &ent, conf.Servers...); err != nil { return err } diff --git a/internal/config/client/client.go b/internal/config/client/client.go index acb3503..d6f2939 100644 --- a/internal/config/client/client.go +++ b/internal/config/client/client.go @@ -1,22 +1,20 @@ package client import ( - "errors" "fmt" "log" "os" - "strings" "codeberg.org/snonux/gos/internal/config" ) type ClientConfig struct { - Server string `json:"Partner,omitempty"` - APIKey string `json:"APIKey,omitempty"` - Editor string `json:"Editor,omitempty"` - DataDir string `json:"StateDir,omitempty"` - ComposeFile string `json:"ComposeFile,omitempty"` - LogFile string `json:"LogFile,omitempty"` + Servers []string `json:"Servers,omitempty"` + APIKey string `json:"APIKey,omitempty"` + Editor string `json:"Editor,omitempty"` + DataDir string `json:"StateDir,omitempty"` + ComposeFile string `json:"ComposeFile,omitempty"` + LogFile string `json:"LogFile,omitempty"` } func New(configFile string) (ClientConfig, error) { @@ -28,7 +26,7 @@ func New(configFile string) (ClientConfig, error) { log.Println("Skipping config file:", err) } - conf.Server = config.EnvToStr("GOS_SERVERS", conf.Server) + conf.Servers = config.EnvToStrSlice("GOS_SERVERS", conf.Servers) conf.APIKey = config.EnvToStr("GOS_API_KEY", conf.APIKey) conf.Editor = config.EnvToStr("GOS_EDITOR", "EDITOR", conf.Editor, "vi") @@ -41,19 +39,3 @@ func New(configFile string) (ClientConfig, error) { return conf, nil } - -func (conf ClientConfig) Servers() ([]string, error) { - var servers []string - - for _, server := range strings.Split(conf.Server, ",") { - if server != "" { - servers = append(servers, server) - } - } - - if len(servers) == 0 { - return servers, errors.New("no server(s) configured") - } - - return servers, nil -} diff --git a/internal/config/server/server.go b/internal/config/server/server.go index 1041a81..f0a0be3 100644 --- a/internal/config/server/server.go +++ b/internal/config/server/server.go @@ -4,21 +4,20 @@ import ( "fmt" "log" "os" - "strings" "codeberg.org/snonux/gos/internal/config" ) type ServerConfig struct { - ListenAddr string `json:"ListenAddr,omitempty"` - Partner string `json:"Partner,omitempty"` - APIKey string `json:"APIKey,omitempty"` - DataDir string `json:"StateDir,omitempty"` - EmailTo string `json:"EmailTo,omitempty"` - EmailFrom string `json:"EmailFrom,omitempty"` - SMTPServer string `json:"SMTPServer,omitempty"` - MergeIntervalS int `json:"MergeInterval,omitempty"` - ScheduleIntervalS int `json:"ScheduleInterval,omitempty"` + ListenAddr string `json:"ListenAddr,omitempty"` + Partners []string `json:"Partners,omitempty"` + APIKey string `json:"APIKey,omitempty"` + DataDir string `json:"StateDir,omitempty"` + EmailTo string `json:"EmailTo,omitempty"` + EmailFrom string `json:"EmailFrom,omitempty"` + SMTPServer string `json:"SMTPServer,omitempty"` + MergeIntervalS int `json:"MergeInterval,omitempty"` + ScheduleIntervalS int `json:"ScheduleInterval,omitempty"` // SocialPlatformsEnable []string `json:"SocialPlatformsEnable,omitempty"` Secrets SecretsConfig `json:"Secrets,omitempty"` } @@ -37,8 +36,7 @@ func New(configFile, secretsFile string) (ServerConfig, error) { } conf.ListenAddr = config.EnvToStr("GOS_LISTEN_ADDR", conf.ListenAddr, "localhost:8080") - // TODO: Return an array or slice - conf.Partner = config.EnvToStr("GOS_PARTNER", "GOS_PARTNERS", conf.Partner) + conf.Partners = config.EnvToStrSlice("GOS_PARTNERS", conf.Partners) conf.APIKey = config.EnvToStr("GOS_API_KEY", conf.APIKey) conf.DataDir = config.EnvToStr("GOS_DATA_DIR", conf.DataDir, "data") conf.EmailTo = config.EnvToStr("GOS_EMAIL_TO", conf.EmailTo) @@ -58,11 +56,3 @@ func New(configFile, secretsFile string) (ServerConfig, error) { return conf, nil } - -func (conf ServerConfig) Partners() ([]string, error) { - if partners := strings.Split(conf.Partner, ","); partners[0] != "" { - return partners, nil - } - - return []string{}, fmt.Errorf("no partners configured") -} diff --git a/internal/server/repository/repository.go b/internal/server/repository/repository.go index 9641ce4..76d8219 100644 --- a/internal/server/repository/repository.go +++ b/internal/server/repository/repository.go @@ -228,12 +228,12 @@ func (r Repository) Merge(otherEnt types.Entry) error { func (r Repository) MergeRemotely(ctx context.Context) error { var errs []error - partners, err := r.conf.Partners() - if err != nil { - return err + if len(r.conf.Partners) == 0 { + log.Println("No partners configured - skipping remote merge operation") + return nil } - for _, partner := range partners { + for _, partner := range r.conf.Partners { if err := r.mergeRemotelyFromPartner(ctx, partner); err != nil { errs = append(errs, err) } |
