in wrappers/golang/pgadapter.go [322:358]
func Start(ctx context.Context, config Config) (pgadapter *PGAdapter, err error) {
autoDetect := config.ExecutionEnvironment == nil
if config.ConnectToEmulator {
if isDockerAvailable() {
_, ok := config.ExecutionEnvironment.(*Docker)
if !ok {
config.ExecutionEnvironment = &Docker{}
}
} else {
return nil, fmt.Errorf("PGAdapter with the Emulator requires Docker to be installed on the local system")
}
}
if config.ExecutionEnvironment == nil {
if isJavaAvailable() {
config.ExecutionEnvironment = &Java{}
} else if isDockerAvailable() {
config.ExecutionEnvironment = &Docker{}
} else {
return nil, fmt.Errorf("PGAdapter requires either Java or Docker to be installed on the local system")
}
}
switch config.ExecutionEnvironment.(type) {
case *Java:
if !autoDetect && !isJavaAvailable() {
return nil, fmt.Errorf("missing Java on local system")
}
return startJava(ctx, config)
case *Docker:
if !autoDetect && !isDockerAvailable() {
return nil, fmt.Errorf("missing Docker on local system")
}
return startDocker(ctx, config)
default:
return nil, fmt.Errorf("unsupported or unknown execution environment: %v", config.ExecutionEnvironment)
}
}