github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/cmd/podmanV2/registry/config.go (about)

     1  package registry
     2  
     3  import (
     4  	"os"
     5  	"runtime"
     6  	"strings"
     7  
     8  	"github.com/containers/common/pkg/config"
     9  	"github.com/containers/libpod/libpod"
    10  	"github.com/containers/libpod/pkg/domain/entities"
    11  	"github.com/sirupsen/logrus"
    12  )
    13  
    14  const (
    15  	RootRequired = "RootRequired"
    16  )
    17  
    18  var (
    19  	PodmanOptions entities.PodmanConfig
    20  )
    21  
    22  // NewPodmanConfig creates a PodmanConfig from the environment
    23  func NewPodmanConfig() entities.PodmanConfig {
    24  	if err := libpod.SetXdgDirs(); err != nil {
    25  		logrus.Errorf(err.Error())
    26  		os.Exit(1)
    27  	}
    28  
    29  	var mode entities.EngineMode
    30  	switch runtime.GOOS {
    31  	case "darwin":
    32  		fallthrough
    33  	case "windows":
    34  		mode = entities.TunnelMode
    35  	case "linux":
    36  		mode = entities.ABIMode
    37  	default:
    38  		logrus.Errorf("%s is not a supported OS", runtime.GOOS)
    39  		os.Exit(1)
    40  	}
    41  
    42  	// cobra.Execute() may not be called yet, so we peek at os.Args.
    43  	for _, v := range os.Args {
    44  		// Prefix checking works because of how default EngineMode's
    45  		// have been defined.
    46  		if strings.HasPrefix(v, "--remote=") {
    47  			mode = entities.TunnelMode
    48  		}
    49  	}
    50  
    51  	// FIXME: for rootless, where to get the path
    52  	// TODO:
    53  	cfg, err := config.NewConfig("")
    54  	if err != nil {
    55  		logrus.Error("Failed to obtain podman configuration")
    56  		os.Exit(1)
    57  	}
    58  	return entities.PodmanConfig{Config: cfg, EngineMode: mode}
    59  }