Skip to content

Commit ca84517

Browse files
authored
Show metadata protocols when displaying ad info (#115)
* If the ad has metadata, then show the metadata protocols. * Add flag to skip entries sync when showing ads * Update dependencies
1 parent 512ef82 commit ca84517

File tree

3 files changed

+53
-28
lines changed

3 files changed

+53
-28
lines changed

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ require (
99
github.com/ipfs/go-log/v2 v2.5.1
1010
github.com/ipld/go-car/v2 v2.13.1
1111
github.com/ipld/go-ipld-prime v0.21.0
12-
github.com/ipni/go-libipni v0.5.23
13-
github.com/libp2p/go-libp2p v0.36.2
12+
github.com/ipni/go-libipni v0.5.25
13+
github.com/libp2p/go-libp2p v0.36.3
1414
github.com/mattn/go-isatty v0.0.20
1515
github.com/montanaflynn/stats v0.7.0
1616
github.com/multiformats/go-multiaddr v0.13.0
1717
github.com/multiformats/go-multicodec v0.9.0
1818
github.com/multiformats/go-multihash v0.2.3
1919
github.com/stretchr/testify v1.9.0
20-
github.com/urfave/cli/v2 v2.25.7
20+
github.com/urfave/cli/v2 v2.27.4
2121
github.com/ybbus/jsonrpc/v2 v2.1.7
2222
golang.org/x/mod v0.20.0
2323
)
@@ -29,7 +29,7 @@ require (
2929
github.com/cespare/xxhash/v2 v2.3.0 // indirect
3030
github.com/containerd/cgroups v1.1.0 // indirect
3131
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
32-
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
32+
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
3333
github.com/davecgh/go-spew v1.1.1 // indirect
3434
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
3535
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
@@ -141,7 +141,7 @@ require (
141141
github.com/whyrusleeping/cbor v0.0.0-20171005072247-63513f603b11 // indirect
142142
github.com/whyrusleeping/cbor-gen v0.1.1 // indirect
143143
github.com/wlynxg/anet v0.0.4 // indirect
144-
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
144+
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
145145
go.opentelemetry.io/otel v1.13.0 // indirect
146146
go.opentelemetry.io/otel/sdk v1.11.1 // indirect
147147
go.opentelemetry.io/otel/trace v1.13.0 // indirect

go.sum

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8
5555
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
5656
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
5757
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
58-
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
59-
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
58+
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
59+
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
6060
github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 h1:HVTnpeuvF6Owjd5mniCL8DEXo7uYXdQEmOP4FJbV5tg=
6161
github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3/go.mod h1:p1d6YEZWvFzEh4KLyvBcVSnrfNDDvK2zfK/4x2v/4pE=
6262
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -292,8 +292,8 @@ github.com/ipld/go-ipld-prime v0.21.0 h1:n4JmcpOlPDIxBcY037SVfpd1G+Sj1nKZah0m6QH
292292
github.com/ipld/go-ipld-prime v0.21.0/go.mod h1:3RLqy//ERg/y5oShXXdx5YIp50cFGOanyMctpPjsvxQ=
293293
github.com/ipld/go-ipld-prime/storage/bsadapter v0.0.0-20230102063945-1a409dc236dd h1:gMlw/MhNr2Wtp5RwGdsW23cs+yCuj9k2ON7i9MiJlRo=
294294
github.com/ipld/go-ipld-prime/storage/bsadapter v0.0.0-20230102063945-1a409dc236dd/go.mod h1:wZ8hH8UxeryOs4kJEJaiui/s00hDSbE37OKsL47g+Sw=
295-
github.com/ipni/go-libipni v0.5.23 h1:24/irMfyFYXHEbosLsHcNaTv/ptV1Y9ptry+ghgOw6s=
296-
github.com/ipni/go-libipni v0.5.23/go.mod h1:qQ0g5teQ1v0yPgoaOJnSvZ4PUyOtL8nS3fwdF/W29UU=
295+
github.com/ipni/go-libipni v0.5.25 h1:H3nBlR2cBS2qmr7aVxsZbFYAztl/wqLLdiKgombrDQs=
296+
github.com/ipni/go-libipni v0.5.25/go.mod h1:rcZd6PWdnNCS1yGj/D3l2yEq0UvarjSq3JdGy9Jn8VM=
297297
github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52 h1:QG4CGBqCeuBo6aZlGAamSkxWdgWfZGeE49eUOWJPA4c=
298298
github.com/ipsn/go-secp256k1 v0.0.0-20180726113642-9d62b9f0bc52/go.mod h1:fdg+/X9Gg4AsAIzWpEHwnqd+QY3b7lajxyjE1m4hkq4=
299299
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
@@ -340,8 +340,8 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6
340340
github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg=
341341
github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM=
342342
github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro=
343-
github.com/libp2p/go-libp2p v0.36.2 h1:BbqRkDaGC3/5xfaJakLV/BrpjlAuYqSB0lRvtzL3B/U=
344-
github.com/libp2p/go-libp2p v0.36.2/go.mod h1:XO3joasRE4Eup8yCTTP/+kX+g92mOgRaadk46LmPhHY=
343+
github.com/libp2p/go-libp2p v0.36.3 h1:NHz30+G7D8Y8YmznrVZZla0ofVANrvBl2c+oARfMeDQ=
344+
github.com/libp2p/go-libp2p v0.36.3/go.mod h1:4Y5vFyCUiJuluEPmpnKYf6WFx5ViKPUYs/ixe9ANFZ8=
345345
github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94=
346346
github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
347347
github.com/libp2p/go-libp2p-pubsub v0.12.0 h1:PENNZjSfk8KYxANRlpipdS7+BfLmOl3L2E/6vSNjbdI=
@@ -584,8 +584,8 @@ github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cb
584584
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
585585
github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
586586
github.com/urfave/cli/v2 v2.0.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
587-
github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
588-
github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
587+
github.com/urfave/cli/v2 v2.27.4 h1:o1owoI+02Eb+K107p27wEX9Bb8eqIoZCfLXloLUSWJ8=
588+
github.com/urfave/cli/v2 v2.27.4/go.mod h1:m4QzxcD2qpra4z7WhzEGn74WZLViBnMpb1ToCAKdGRQ=
589589
github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=
590590
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
591591
github.com/warpfork/go-testmark v0.12.1 h1:rMgCpJfwy1sJ50x0M0NgyphxYYPMOODIJHhsXyEHU0s=
@@ -607,8 +607,8 @@ github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9
607607
github.com/wlynxg/anet v0.0.3/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA=
608608
github.com/wlynxg/anet v0.0.4 h1:0de1OFQxnNqAu+x2FAKKCVIrnfGKQbs7FQz++tB0+Uw=
609609
github.com/wlynxg/anet v0.0.4/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA=
610-
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
611-
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
610+
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4=
611+
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM=
612612
github.com/ybbus/jsonrpc/v2 v2.1.7 h1:QjoXuZhkXZ3oLBkrONBe2avzFkYeYLorpeA+d8175XQ=
613613
github.com/ybbus/jsonrpc/v2 v2.1.7/go.mod h1:rIuG1+ORoiqocf9xs/v+ecaAVeo3zcZHQgInyKFMeg0=
614614
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=

pkg/ads/get.go

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
"github.com/ipfs/go-cid"
1212
"github.com/ipfs/go-datastore"
13+
"github.com/ipni/go-libipni/metadata"
1314
"github.com/ipni/ipni-cli/pkg/adpub"
1415
"github.com/libp2p/go-libp2p/core/peer"
1516
"github.com/mattn/go-isatty"
@@ -51,6 +52,11 @@ var adsGetFlags = []cli.Flag{
5152
Usage: "Whether to print the list of entries in advertisement",
5253
Aliases: []string{"e"},
5354
},
55+
&cli.BoolFlag{
56+
Name: "skip-entries",
57+
Usage: "Skip syncing entries",
58+
Aliases: []string{"se"},
59+
},
5460
&cli.Int64Flag{
5561
Name: "entries-depth-limit",
5662
Aliases: []string{"edl"},
@@ -126,10 +132,8 @@ func adsGetAction(cctx *cli.Context) error {
126132
return err
127133
}
128134

129-
for i, adCid := range adCids {
130-
if i != 0 {
131-
fmt.Println()
132-
}
135+
for _, adCid := range adCids {
136+
fmt.Println()
133137

134138
ad, err := pubClient.GetAdvertisement(cctx.Context, adCid)
135139
if err != nil {
@@ -147,12 +151,29 @@ func adsGetAction(cctx *cli.Context) error {
147151
if ad.PreviousID != cid.Undef {
148152
prevCID = ad.PreviousID.String()
149153
}
154+
155+
var mdProtos []string
156+
if len(ad.Metadata) != 0 {
157+
md := metadata.Default.New()
158+
err = md.UnmarshalBinary(ad.Metadata)
159+
if err == nil {
160+
for _, p := range md.Protocols() {
161+
mdProtos = append(mdProtos, p.String())
162+
}
163+
}
164+
}
165+
150166
fmt.Printf("PreviousCID: %s\n", prevCID)
151167
fmt.Printf("ProviderID: %s\n", ad.ProviderID)
152168
fmt.Printf("ContextID: %s\n", base64.StdEncoding.EncodeToString(ad.ContextID))
153169
fmt.Printf("Addresses: %v\n", ad.Addresses)
154170
fmt.Printf("Is Remove: %v\n", ad.IsRemove)
155-
fmt.Printf("Metadata: %s\n", base64.StdEncoding.EncodeToString(ad.Metadata))
171+
fmt.Print("Metadata: ")
172+
if len(mdProtos) != 0 {
173+
fmt.Println(strings.Join(mdProtos, " "))
174+
} else {
175+
fmt.Println(base64.StdEncoding.EncodeToString(ad.Metadata))
176+
}
156177

157178
fmt.Println("Extended Providers:")
158179
if ad.ExtendedProvider != nil {
@@ -196,18 +217,22 @@ func adsGetAction(cctx *cli.Context) error {
196217
continue
197218
}
198219

199-
// Sync entries if not a removal advertisement and has entries.
200-
if ad.HasEntries() {
201-
err = pubClient.SyncEntriesWithRetry(cctx.Context, ad.Entries.Root())
202-
if err != nil {
203-
fmt.Fprintf(os.Stderr, "⚠️ Failed to sync entries for advertisement %s: %s\n", ad.ID, err)
204-
continue
205-
}
206-
} else {
220+
if !ad.HasEntries() {
207221
fmt.Println("No entries")
208222
continue
209223
}
210224

225+
if cctx.Bool("skip-entries") {
226+
continue
227+
}
228+
229+
// Sync entries if not a removal advertisement and has entries.
230+
err = pubClient.SyncEntriesWithRetry(cctx.Context, ad.Entries.Root())
231+
if err != nil {
232+
fmt.Fprintf(os.Stderr, "⚠️ Failed to sync entries for advertisement %s: %s\n", ad.ID, err)
233+
continue
234+
}
235+
211236
fmt.Println("Entries:")
212237
var entriesOutput string
213238
entries, err := ad.Entries.Drain()

0 commit comments

Comments
 (0)