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 }