This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/util/buildkitd/buildkit_information.go

63 lines
1.3 KiB
Go
Raw Normal View History

package buildkitd
import (
"context"
"fmt"
"os/exec"
"strconv"
"strings"
"github.com/docker/distribution/reference"
)
func getBuildkitInformation(ctx context.Context) (*BuildkitInformation, error) {
formatString := "{{.Config.Image}};{{.State.Running}};{{if index .NetworkSettings.Networks \"host\"}}{{\"true\"}}{{else}}{{\"false\"}}{{end}}"
cmd := exec.CommandContext(ctx,
"docker",
"inspect",
"--format",
formatString,
containerName,
)
output, err := cmd.CombinedOutput()
if err != nil {
return nil, err
}
s := strings.Split(string(output), ";")
// Retrieve the tag
ref, err := reference.ParseNormalizedNamed(strings.TrimSpace(s[0]))
if err != nil {
return nil, err
}
tag, ok := ref.(reference.Tagged)
if !ok {
return nil, fmt.Errorf("failed to parse image: %s", output)
}
// Retrieve the state
isActive, err := strconv.ParseBool(strings.TrimSpace(s[1]))
if err != nil {
return nil, err
}
// Retrieve the check on if the host network is configured
haveHostNetwork, err := strconv.ParseBool(strings.TrimSpace(s[2]))
if err != nil {
return nil, err
}
return &BuildkitInformation{
Version: tag.Tag(),
IsActive: isActive,
HaveHostNetwork: haveHostNetwork,
}, nil
}
type BuildkitInformation struct {
Version string
IsActive bool
HaveHostNetwork bool
}