5
5
"errors"
6
6
"fmt"
7
7
"os"
8
+ "regexp"
8
9
"slices"
9
10
"strings"
10
11
"time"
@@ -128,10 +129,27 @@ func images(cmd *cobra.Command, args []string) error {
128
129
return err
129
130
}
130
131
131
- imgs , err := sortImages (summaries )
132
+ reference := ""
133
+ for _ , filter := range listOptions .Filter {
134
+ if strings .HasPrefix (filter , "reference=" ) {
135
+ reference = strings .TrimPrefix (filter , "reference=" )
136
+ if strings .HasPrefix (reference , "sha256:" ) {
137
+ reference = ""
138
+ break
139
+ }
140
+ reference , _ , _ = tokenRepoTag (reference )
141
+ if strings .Contains (reference , "<none>" ) {
142
+ reference = ""
143
+ }
144
+ break
145
+ }
146
+ }
147
+
148
+ imgs , err := sortImages (summaries , reference )
132
149
if err != nil {
133
150
return err
134
151
}
152
+
135
153
switch {
136
154
case report .IsJSON (listFlag .format ):
137
155
return writeJSON (imgs )
@@ -214,9 +232,16 @@ func writeTemplate(cmd *cobra.Command, imgs []imageReporter) error {
214
232
return rpt .Execute (imgs )
215
233
}
216
234
217
- func sortImages (imageS []* entities.ImageSummary ) ([]imageReporter , error ) {
218
- imgs := make ([]imageReporter , 0 , len (imageS ))
235
+ func sortImages (imageS []* entities.ImageSummary , reference string ) ([]imageReporter , error ) {
219
236
var err error
237
+ var referenceRegex * regexp.Regexp
238
+ if reference != "" {
239
+ referenceRegex , err = regexp .Compile (reference + "$" )
240
+ if err != nil {
241
+ return nil , err
242
+ }
243
+ }
244
+ imgs := make ([]imageReporter , 0 , len (imageS ))
220
245
for _ , e := range imageS {
221
246
var h imageReporter
222
247
if len (e .RepoTags ) > 0 {
@@ -237,7 +262,12 @@ func sortImages(imageS []*entities.ImageSummary) ([]imageReporter, error) {
237
262
// Note: we only want to display "<none>" if we
238
263
// couldn't find any tagged name in RepoTags.
239
264
if len (tagged ) > 0 {
240
- imgs = append (imgs , tagged ... )
265
+ for _ , i := range tagged {
266
+ if reference != "" && ! referenceRegex .MatchString (i .Repository ) {
267
+ continue
268
+ }
269
+ imgs = append (imgs , i )
270
+ }
241
271
} else {
242
272
imgs = append (imgs , untagged [0 ])
243
273
}
0 commit comments