| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5,15 +5,16 @@ import (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"io"
 | 
					 | 
					 | 
					 | 
						"io"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"os"
 | 
					 | 
					 | 
					 | 
						"os"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"text/tabwriter"
 | 
					 | 
					 | 
					 | 
						"text/tabwriter"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						"time"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/buildx/build"
 | 
					 | 
					 | 
					 | 
						"github.com/docker/buildx/build"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/cli/cli"
 | 
					 | 
					 | 
					 | 
						"github.com/docker/cli/cli"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/cli/cli/command"
 | 
					 | 
					 | 
					 | 
						"github.com/docker/cli/cli/command"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/cli/opts"
 | 
					 | 
					 | 
					 | 
						"github.com/docker/cli/opts"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						"github.com/docker/go-units"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/moby/buildkit/client"
 | 
					 | 
					 | 
					 | 
						"github.com/moby/buildkit/client"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/moby/buildkit/util/appcontext"
 | 
					 | 
					 | 
					 | 
						"github.com/moby/buildkit/util/appcontext"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/spf13/cobra"
 | 
					 | 
					 | 
					 | 
						"github.com/spf13/cobra"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/tonistiigi/units"
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"golang.org/x/sync/errgroup"
 | 
					 | 
					 | 
					 | 
						"golang.org/x/sync/errgroup"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					)
 | 
					 | 
					 | 
					 | 
					)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -132,13 +133,13 @@ func printVerbose(tw *tabwriter.Writer, du []*client.UsageInfo) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							printKV(tw, "Mutable", di.Mutable)
 | 
					 | 
					 | 
					 | 
							printKV(tw, "Mutable", di.Mutable)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							printKV(tw, "Reclaimable", !di.InUse)
 | 
					 | 
					 | 
					 | 
							printKV(tw, "Reclaimable", !di.InUse)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							printKV(tw, "Shared", di.Shared)
 | 
					 | 
					 | 
					 | 
							printKV(tw, "Shared", di.Shared)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							printKV(tw, "Size", fmt.Sprintf("%.2f", units.Bytes(di.Size)))
 | 
					 | 
					 | 
					 | 
							printKV(tw, "Size", units.HumanSize(float64(di.Size)))
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if di.Description != "" {
 | 
					 | 
					 | 
					 | 
							if di.Description != "" {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								printKV(tw, "Description", di.Description)
 | 
					 | 
					 | 
					 | 
								printKV(tw, "Description", di.Description)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							printKV(tw, "Usage count", di.UsageCount)
 | 
					 | 
					 | 
					 | 
							printKV(tw, "Usage count", di.UsageCount)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if di.LastUsedAt != nil {
 | 
					 | 
					 | 
					 | 
							if di.LastUsedAt != nil {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								printKV(tw, "Last used", di.LastUsedAt)
 | 
					 | 
					 | 
					 | 
								printKV(tw, "Last used", units.HumanDuration(time.Since(*di.LastUsedAt))+" ago")
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if di.RecordType != "" {
 | 
					 | 
					 | 
					 | 
							if di.RecordType != "" {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								printKV(tw, "Type", di.RecordType)
 | 
					 | 
					 | 
					 | 
								printKV(tw, "Type", di.RecordType)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -159,11 +160,15 @@ func printTableRow(tw *tabwriter.Writer, di *client.UsageInfo) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if di.Mutable {
 | 
					 | 
					 | 
					 | 
						if di.Mutable {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							id += "*"
 | 
					 | 
					 | 
					 | 
							id += "*"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						size := fmt.Sprintf("%.2f", units.Bytes(di.Size))
 | 
					 | 
					 | 
					 | 
						size := units.HumanSize(float64(di.Size))
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if di.Shared {
 | 
					 | 
					 | 
					 | 
						if di.Shared {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							size += "*"
 | 
					 | 
					 | 
					 | 
							size += "*"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fmt.Fprintf(tw, "%-71s\t%-11v\t%s\t\n", id, !di.InUse, size)
 | 
					 | 
					 | 
					 | 
						lastAccessed := ""
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if di.LastUsedAt != nil {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							lastAccessed = units.HumanDuration(time.Since(*di.LastUsedAt)) + " ago"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						fmt.Fprintf(tw, "%-40s\t%-5v\t%-10s\t%s\n", id, !di.InUse, size, lastAccessed)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func printSummary(tw *tabwriter.Writer, dus [][]*client.UsageInfo) {
 | 
					 | 
					 | 
					 | 
					func printSummary(tw *tabwriter.Writer, dus [][]*client.UsageInfo) {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -186,11 +191,11 @@ func printSummary(tw *tabwriter.Writer, dus [][]*client.UsageInfo) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if shared > 0 {
 | 
					 | 
					 | 
					 | 
						if shared > 0 {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprintf(tw, "Shared:\t%.2f\n", units.Bytes(shared))
 | 
					 | 
					 | 
					 | 
							fmt.Fprintf(tw, "Shared:\t%s\n", units.HumanSize(float64(shared)))
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							fmt.Fprintf(tw, "Private:\t%.2f\n", units.Bytes(total-shared))
 | 
					 | 
					 | 
					 | 
							fmt.Fprintf(tw, "Private:\t%s\n", units.HumanSize(float64(total-shared)))
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fmt.Fprintf(tw, "Reclaimable:\t%.2f\n", units.Bytes(reclaimable))
 | 
					 | 
					 | 
					 | 
						fmt.Fprintf(tw, "Reclaimable:\t%s\n", units.HumanSize(float64(reclaimable)))
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fmt.Fprintf(tw, "Total:\t%.2f\n", units.Bytes(total))
 | 
					 | 
					 | 
					 | 
						fmt.Fprintf(tw, "Total:\t%s\n", units.HumanSize(float64(total)))
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						tw.Flush()
 | 
					 | 
					 | 
					 | 
						tw.Flush()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
 
 |