瀏覽代碼

images command should display image Created time or N/A if not available

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 1 月之前
父節點
當前提交
d7e5f20eb6
共有 4 個文件被更改,包括 24 次插入18 次删除
  1. 13 11
      cmd/compose/images.go
  2. 1 1
      pkg/api/api.go
  3. 7 3
      pkg/compose/images.go
  4. 3 3
      pkg/compose/images_test.go

+ 13 - 11
cmd/compose/images.go

@@ -95,21 +95,19 @@ func runImages(ctx context.Context, dockerCli command.Cli, backendOptions *Backe
 	if opts.Format == "json" {
 
 		type img struct {
-			ID            string    `json:"ID"`
-			ContainerName string    `json:"ContainerName"`
-			Repository    string    `json:"Repository"`
-			Tag           string    `json:"Tag"`
-			Platform      string    `json:"Platform"`
-			Size          int64     `json:"Size"`
-			LastTagTime   time.Time `json:"LastTagTime"`
+			ID            string     `json:"ID"`
+			ContainerName string     `json:"ContainerName"`
+			Repository    string     `json:"Repository"`
+			Tag           string     `json:"Tag"`
+			Platform      string     `json:"Platform"`
+			Size          int64      `json:"Size"`
+			Created       *time.Time `json:"Created,omitempty"`
+			LastTagTime   time.Time  `json:"LastTagTime,omitzero"`
 		}
 		// Convert map to slice
 		var imageList []img
 		for ctr, i := range images {
 			lastTagTime := i.LastTagTime
-			if lastTagTime.IsZero() {
-				lastTagTime = i.Created
-			}
 			imageList = append(imageList, img{
 				ContainerName: ctr,
 				ID:            i.ID,
@@ -117,6 +115,7 @@ func runImages(ctx context.Context, dockerCli command.Cli, backendOptions *Backe
 				Tag:           i.Tag,
 				Platform:      platforms.Format(i.Platform),
 				Size:          i.Size,
+				Created:       i.Created,
 				LastTagTime:   lastTagTime,
 			})
 		}
@@ -142,7 +141,10 @@ func runImages(ctx context.Context, dockerCli command.Cli, backendOptions *Backe
 				if tag == "" {
 					tag = "<none>"
 				}
-				created := units.HumanDuration(time.Now().UTC().Sub(img.LastTagTime)) + " ago"
+				created := "N/A"
+				if img.Created != nil {
+					created = units.HumanDuration(time.Now().UTC().Sub(*img.Created)) + " ago"
+				}
 				_, _ = fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
 					container, repo, tag, platforms.Format(img.Platform), id, size, created)
 			}

+ 1 - 1
pkg/api/api.go

@@ -603,7 +603,7 @@ type ImageSummary struct {
 	Tag         string
 	Platform    platforms.Platform
 	Size        int64
-	Created     time.Time
+	Created     *time.Time
 	LastTagTime time.Time
 }
 

+ 7 - 3
pkg/compose/images.go

@@ -91,9 +91,13 @@ func (s *composeService) Images(ctx context.Context, projectName string, options
 				}
 			}
 
-			created, err := time.Parse(time.RFC3339Nano, image.Created)
-			if err != nil {
-				return err
+			var created *time.Time
+			if image.Created != "" {
+				t, err := time.Parse(time.RFC3339Nano, image.Created)
+				if err != nil {
+					return err
+				}
+				created = &t
 			}
 
 			mux.Lock()

+ 3 - 3
pkg/compose/images_test.go

@@ -66,21 +66,21 @@ func TestImages(t *testing.T) {
 			Repository: "foo",
 			Tag:        "1",
 			Size:       12345,
-			Created:    created1,
+			Created:    &created1,
 		},
 		"456": {
 			ID:         "image2",
 			Repository: "bar",
 			Tag:        "2",
 			Size:       67890,
-			Created:    created2,
+			Created:    &created2,
 		},
 		"789": {
 			ID:         "image1",
 			Repository: "foo",
 			Tag:        "1",
 			Size:       12345,
-			Created:    created1,
+			Created:    &created1,
 		},
 	}
 	assert.NilError(t, err)