@@ -52,22 +52,21 @@ func (cs *contentStore) Info(ctx context.Context, dgst digest.Digest) (content.I
5252 return info , nil
5353}
5454
55- func (cs * contentStore ) Update (ctx context.Context , info content.Info , fieldpaths ... string ) error {
55+ func (cs * contentStore ) Update (ctx context.Context , info content.Info , fieldpaths ... string ) (content. Info , error ) {
5656 ns , err := namespaces .NamespaceRequired (ctx )
5757 if err != nil {
58- return err
58+ return content. Info {}, err
5959 }
6060
61+ updated := content.Info {
62+ Digest : info .Digest ,
63+ }
6164 if err := update (ctx , cs .db , func (tx * bolt.Tx ) error {
6265 bkt := getBlobBucket (tx , ns , info .Digest )
6366 if bkt == nil {
6467 return errors .Wrapf (errdefs .ErrNotFound , "content digest %v" , info .Digest )
6568 }
6669
67- updated := content.Info {
68- Digest : info .Digest ,
69- }
70-
7170 if err := readInfo (& updated , bkt ); err != nil {
7271 return errors .Wrapf (err , "info %q" , info .Digest )
7372 }
@@ -92,16 +91,16 @@ func (cs *contentStore) Update(ctx context.Context, info content.Info, fieldpath
9291 }
9392 }
9493 } else {
95- info . CommittedAt = updated . CommittedAt
96- updated = info
94+ // Set mutable fields
95+ updated . Labels = info . Labels
9796 }
9897
9998 updated .UpdatedAt = time .Now ().UTC ()
10099 return writeInfo (& updated , bkt )
101100 }); err != nil {
102- return err
101+ return content. Info {}, err
103102 }
104- return nil
103+ return updated , nil
105104}
106105
107106func (cs * contentStore ) Walk (ctx context.Context , fn content.WalkFunc , fs ... string ) error {
@@ -110,17 +109,9 @@ func (cs *contentStore) Walk(ctx context.Context, fn content.WalkFunc, fs ...str
110109 return err
111110 }
112111
113- var filter filters.Filter = filters .Always
114- if len (fs ) > 0 {
115- fa := make ([]filters.Filter , 0 , len (fs ))
116- for _ , s := range fs {
117- f , err := filters .Parse (s )
118- if err != nil {
119- return errors .Wrapf (errdefs .ErrInvalidArgument , "bad filter %q" , s )
120- }
121- fa = append (fa , f )
122- }
123- filter = filters .Filter (filters .Any (fa ))
112+ filter , err := filters .ParseAll (fs ... )
113+ if err != nil {
114+ return err
124115 }
125116
126117 // TODO: Batch results to keep from reading all info into memory
@@ -481,22 +472,3 @@ func writeInfo(info *content.Info, bkt *bolt.Bucket) error {
481472
482473 return nil
483474}
484-
485- func adaptContentInfo (info content.Info ) filters.Adaptor {
486- return filters .AdapterFunc (func (fieldpath []string ) (string , bool ) {
487- if len (fieldpath ) == 0 {
488- return "" , false
489- }
490-
491- switch fieldpath [0 ] {
492- case "digest" :
493- return info .Digest .String (), true
494- case "size" :
495- // TODO: support size based filtering
496- case "labels" :
497- return checkMap (fieldpath [1 :], info .Labels )
498- }
499-
500- return "" , false
501- })
502- }
0 commit comments