aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpg9182 <96569817+pg9182@users.noreply.github.com>2023-03-08 19:48:51 -0500
committerpg9182 <96569817+pg9182@users.noreply.github.com>2023-04-17 14:49:47 -0400
commit40bf23b43937053ca7fba5695eb5a7b4dfd814de (patch)
tree920a568103cde3c6f1ee93010ceefd1d3021c6a0
parent5cdaae7128d59b5afc0126621273075465d8afe3 (diff)
downloadAtlas-40bf23b43937053ca7fba5695eb5a7b4dfd814de.tar.gz
Atlas-40bf23b43937053ca7fba5695eb5a7b4dfd814de.zip
pkg/atlas: Add support for parsing netip.AddrPort in config
-rw-r--r--pkg/atlas/config.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/pkg/atlas/config.go b/pkg/atlas/config.go
index 2855489..4dea103 100644
--- a/pkg/atlas/config.go
+++ b/pkg/atlas/config.go
@@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"io/fs"
+ "net/netip"
"os"
"os/user"
"path/filepath"
@@ -339,6 +340,16 @@ func (c *Config) UnmarshalEnv(es []string, incremental bool) error {
} else {
return fmt.Errorf("env %s (%T): parse %q: %w", key, cvf.Interface(), val, err)
}
+ case netip.AddrPort:
+ if val == "" {
+ cvf.Set(reflect.ValueOf(netip.AddrPort{}))
+ } else if v, err := netip.ParseAddrPort(val); err == nil {
+ cvf.Set(reflect.ValueOf(v))
+ } else if v, err1 := netip.ParseAddrPort("[::]" + val); val[0] == ':' && err1 == nil {
+ cvf.Set(reflect.ValueOf(v))
+ } else {
+ return fmt.Errorf("env %s (%T): parse %q: %w", key, cvf.Interface(), val, err)
+ }
default:
return fmt.Errorf("unhandled type %T (%s)", cvf.Interface(), env)
}