func Start()

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)
	}
}