package engine

import (
	"context"

	"github.com/docker/docker/client"
)

type Docker struct {
	client   client.APIClient
	hidePull bool
}

func New(opts ...Option) (*Docker, error) {
	cli, err := client.NewClientWithOpts(client.FromEnv)
	if err != nil {
		return nil, err
	}

	srv := &Docker{
		client: cli,
	}

	// Loop through each option
	for _, opt := range opts {
		// Call the option giving the instantiated
		opt.Apply(srv)
	}

	return srv, nil
}

// Ping pings the Docker daemon.
func (e *Docker) Ping(ctx context.Context) error {
	_, err := e.client.Ping(ctx)
	return err
}