62f0c575/14/2026, 9:47:06 AM
.cr
Crystal
(text/x-crystal)
require "./api_client_wrapper"
require "./containers"
require "./images"

# A client for communicating with a Docker server.
#
# Provides the main entrypoint for common interaction with a docker instance.
class Docker::Client
  include Docker::ApiClientWrapper

  property api_version : String = "latest"

  # Creates a new instance for the passed *base_url*
  def initialize(base_url = Docker::Api::ApiClient::DEFAULT_URL, @api_version = "latest")
    @client = Docker::Api::ApiClient.new base_url, @api_version
  end

  {% for component in %w(containers images) %}
    # Provide an object for managing {{component.id}}. See `Docker::{{component.id.capitalize}}`.
    def {{component.id}} : {{component.id.capitalize}}
      @{{component.id}} ||= {{component.id.capitalize}}.new client
    end
  {% end %}
end