crystal-docker-api | d2fd2cb51ab5a88e2abf0624b1d1197aec93b705 | src/docker/client.cr ∙ GitFOSS
.cr
Crystal
(text/x-crystal)
require "./api_client_wrapper"
require "./containers"
require "./images"
require "./volumes"

# 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 %}

  def volumes
    Volumes.new @client
  end
end