@@ -2,13 +2,15 @@ package networkinterface
22
33import (
44 "fmt"
5+ "strings"
56
67 "github.com/UpCloudLtd/upcloud-cli/internal/commands"
78 "github.com/UpCloudLtd/upcloud-cli/internal/completion"
89 "github.com/UpCloudLtd/upcloud-cli/internal/config"
910 "github.com/UpCloudLtd/upcloud-cli/internal/output"
1011 "github.com/UpCloudLtd/upcloud-cli/internal/resolver"
1112 "github.com/UpCloudLtd/upcloud-cli/internal/ui"
13+ "github.com/jedib0t/go-pretty/v6/text"
1214
1315 "github.com/UpCloudLtd/upcloud-go-api/v4/upcloud"
1416 "github.com/UpCloudLtd/upcloud-go-api/v4/upcloud/request"
@@ -107,5 +109,23 @@ func (s *createCommand) ExecuteSingleArgument(exec commands.Executor, arg string
107109 logline .SetMessage (fmt .Sprintf ("%s: done" , msg ))
108110 logline .MarkDone ()
109111
110- return output.OnlyMarshaled {Value : res }, nil
112+ return output.MarshaledWithHumanDetails {Value : res , Details : []output.DetailRow {
113+ {Title : "MAC Address" , Value : res .MAC },
114+ {Title : "IP Addresses" , Value : res , Format : formatIPAddresses },
115+ }}, nil
116+ }
117+
118+ func formatIPAddresses (val interface {}) (text.Colors , string , error ) {
119+ iface , ok := val .(* upcloud.Interface )
120+ if ! ok {
121+ return nil , "" , fmt .Errorf ("cannot parse IP addresses from %T, expected *upcloud.Interface" , val )
122+ }
123+
124+ strs := make ([]string , len (iface .IPAddresses ))
125+
126+ for i , ipa := range iface .IPAddresses {
127+ strs [i ] = ui .DefaultAddressColours .Sprint (ipa .Address )
128+ }
129+
130+ return nil , strings .Join (strs , ",\n " ), nil
111131}
0 commit comments