| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | package dockerimport (	"context"	"github.com/docker/docker/client"	"github.com/uozi-tech/cosy")type ContainerStatus intconst (	ContainerStatusCreated ContainerStatus = iota	ContainerStatusRunning	ContainerStatusPaused	ContainerStatusRestarting	ContainerStatusRemoving	ContainerStatusExited	ContainerStatusDead	ContainerStatusUnknown	ContainerStatusNotFound)var (	containerStatusMap = map[string]ContainerStatus{		"created":    ContainerStatusCreated,		"running":    ContainerStatusRunning,		"paused":     ContainerStatusPaused,		"restarting": ContainerStatusRestarting,		"removing":   ContainerStatusRemoving,		"exited":     ContainerStatusExited,		"dead":       ContainerStatusDead,	})// GetContainerStatus checks the status of a given container.func GetContainerStatus(ctx context.Context, containerID string) (ContainerStatus, error) {	cli, err := initClient()	if err != nil {		return ContainerStatusUnknown, cosy.WrapErrorWithParams(ErrClientNotInitialized, err.Error())	}	defer cli.Close()	containerJSON, err := cli.ContainerInspect(ctx, containerID)	if err != nil {		if client.IsErrNotFound(err) {			return ContainerStatusNotFound, nil // Container doesn't exist		}		return ContainerStatusUnknown, cosy.WrapErrorWithParams(ErrInspectContainer, err.Error())	}	// Can be one of "created", "running", "paused", "restarting", "removing", "exited", or "dead"	status, ok := containerStatusMap[containerJSON.State.Status]	if !ok {		return ContainerStatusUnknown, ErrContainerStatusUnknown	}	return status, nil}
 |