package system // import "github.com/docker/docker/pkg/system"

import (
	"os"

	"github.com/Microsoft/hcsshim/osversion"
	"github.com/sirupsen/logrus"
)

var (
	// lcowSupported determines if Linux Containers on Windows are supported.
	lcowSupported = false

	// containerdRuntimeSupported determines if ContainerD should be the runtime.
	// As of March 2019, this is an experimental feature.
	containerdRuntimeSupported = false
)

// InitLCOW sets whether LCOW is supported or not. Requires RS5+
func InitLCOW(experimental bool) {
	v := GetOSVersion()
	if experimental && v.Build >= osversion.RS5 {
		lcowSupported = true
	}
}

// InitContainerdRuntime sets whether to use ContainerD for runtime
// on Windows. This is an experimental feature still in development, and
// also requires an environment variable to be set (so as not to turn the
// feature on from simply experimental which would also mean LCOW.
func InitContainerdRuntime(experimental bool, cdPath string) {
	if experimental && len(cdPath) > 0 && len(os.Getenv("DOCKER_WINDOWS_CONTAINERD_RUNTIME")) > 0 {
		logrus.Warnf("Using ContainerD runtime. This feature is experimental")
		containerdRuntimeSupported = true
	}
}

// ContainerdRuntimeSupported returns true if the use of ContainerD runtime is supported.
func ContainerdRuntimeSupported() bool {
	return containerdRuntimeSupported
}