get.porter.sh/porter@v1.3.0/pkg/cnab/drivers/drivers.go (about) 1 package drivers 2 3 import ( 4 "fmt" 5 6 "get.porter.sh/porter/pkg/portercontext" 7 "github.com/cnabio/cnab-go/driver" 8 "github.com/cnabio/cnab-go/driver/command" 9 "github.com/cnabio/cnab-go/driver/debug" 10 "github.com/cnabio/cnab-go/driver/docker" 11 "github.com/cnabio/cnab-go/driver/kubernetes" 12 ) 13 14 // LookupDriver creates a driver by name. 15 // 16 // This replaces cnab-go's lookup function because cnab-go uses global process 17 // values, such as $PATH, instead of our context. 18 func LookupDriver(cxt *portercontext.Context, name string) (driver.Driver, error) { 19 switch name { 20 case "docker": 21 return &docker.Driver{}, nil 22 case "kubernetes", "k8s": 23 return &kubernetes.Driver{}, nil 24 case "debug": 25 return &debug.Driver{}, nil 26 default: 27 // Drivers must be named "cnab-NAME" and be on the PATH 28 if driverPath, ok := cxt.LookPath("cnab-" + name); ok { 29 d := &command.Driver{Name: name} 30 d.Path = driverPath 31 return d, nil 32 } 33 34 return nil, fmt.Errorf("unsupported driver or driver not found in PATH: %s", name) 35 } 36 }