podman-build/cmd/podman/images/buildx_inspect.go
2025-10-11 12:30:35 +09:00

82 lines
2.1 KiB
Go

package images
import (
"fmt"
"strings"
"github.com/containers/podman/v5/cmd/podman/registry"
"github.com/spf13/cobra"
)
type buildNode struct {
Name string
Endpoint string
Status string
BuildkitVersion string
Platforms []string
}
type buildxInspectOutput struct {
builderName string
driverName string
Nodes []buildNode
}
var buildxInspectCmd = &cobra.Command{
Use: "inspect",
Short: "Inspects build capabilities",
Long: "Displays information about the current builder instance (compatibility with Docker buildx inspect)",
RunE: runBuildxInspect,
Example: `podman buildx inspect
podman buildx inspect --bootstrap`,
}
func init() {
buildxInspectCmd.Flags().Bool("bootstrap", false, "Currently a No Op for podman")
registry.Commands = append(registry.Commands, registry.CliCommand{
Command: buildxInspectCmd,
Parent: buildxCmd,
})
}
func runBuildxInspect(cmd *cobra.Command, args []string) error {
info, err := registry.ContainerEngine().Info(registry.Context())
if err != nil {
return fmt.Errorf("retrieving podman information: %w", err)
}
nativePlatform := fmt.Sprintf("%s/%s", info.Host.OS, info.Host.Arch)
// Constants are based on default values for Docker buildx inspect.
defaultNode := buildNode{
Name: "default",
Endpoint: "default",
Status: "running",
BuildkitVersion: "N/A",
Platforms: []string{nativePlatform},
}
defaultNode.Platforms = append(defaultNode.Platforms, info.Host.EmulatedArchitectures...)
out := buildxInspectOutput{
builderName: "default",
driverName: "podman",
Nodes: []buildNode{defaultNode},
}
fmt.Printf("Name: %s\n", out.builderName)
fmt.Printf("Driver: %s\n", out.driverName)
fmt.Println()
fmt.Println("Nodes:")
fmt.Printf("Name: %s\n", out.Nodes[0].Name)
fmt.Printf("Endpoint: %s\n", out.Nodes[0].Endpoint)
fmt.Printf("Status: %s\n", out.Nodes[0].Status)
fmt.Printf("Buildkit version: %s\n", out.Nodes[0].BuildkitVersion)
fmt.Printf("Platforms: %s\n", strings.Join(out.Nodes[0].Platforms, ", "))
fmt.Println("Labels: ")
return nil
}