Class: Kuby::Docker::Image

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/kuby/docker/image.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dockerfile, image_url, credentials, main_tag = nil, alias_tags = []) ⇒ Image

Returns a new instance of Image.



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/kuby/docker/image.rb', line 29

def initialize(dockerfile, image_url, credentials, main_tag = nil, alias_tags = [])
  @dockerfile = T.let(dockerfile, T.any(Dockerfile, T.proc.returns(Dockerfile)))
  @image_url = T.let(image_url, String)
  @credentials = T.let(credentials, Credentials)
  @main_tag = T.let(main_tag, T.nilable(String))
  @alias_tags = T.let(alias_tags, T::Array[String])

  @image_host = T.let(@image_host, T.nilable(String))
  @image_hostname = T.let(@image_hostname, T.nilable(String))
  @image_repo = T.let(@image_repo, T.nilable(String))
  @full_image_uri = T.let(@full_image_uri, T.nilable(DockerURI))
  @docker_cli = T.let(@docker_cli, T.nilable(Docker::CLI))
end

Instance Attribute Details

#alias_tagsObject (readonly)

Returns the value of attribute alias_tags.



18
19
20
# File 'lib/kuby/docker/image.rb', line 18

def alias_tags
  @alias_tags
end

#credentialsObject (readonly)

Returns the value of attribute credentials.



12
13
14
# File 'lib/kuby/docker/image.rb', line 12

def credentials
  @credentials
end

#image_urlObject (readonly)

Returns the value of attribute image_url.



9
10
11
# File 'lib/kuby/docker/image.rb', line 9

def image_url
  @image_url
end

#main_tagObject (readonly)

Returns the value of attribute main_tag.



15
16
17
# File 'lib/kuby/docker/image.rb', line 15

def main_tag
  @main_tag
end

Instance Method Details

#build(build_args = {}) ⇒ Object

Raises:

  • (NotImplementedError)


93
94
95
# File 'lib/kuby/docker/image.rb', line 93

def build(build_args = {})
  raise NotImplementedError, 'please use a Docker::Image subclass'
end

#current_versionObject

Raises:

  • (NotImplementedError)


49
50
51
# File 'lib/kuby/docker/image.rb', line 49

def current_version
  raise NotImplementedError, 'please use a Docker::Image subclass'
end

#docker_cliObject



103
104
105
# File 'lib/kuby/docker/image.rb', line 103

def docker_cli
  @docker_cli ||= Docker::CLI.new
end

#dockerfileObject



59
60
61
62
63
64
65
# File 'lib/kuby/docker/image.rb', line 59

def dockerfile
  if @dockerfile.respond_to?(:call)
    T.cast(@dockerfile, T.proc.returns(Dockerfile)).call
  else
    T.cast(@dockerfile, Dockerfile)
  end
end

#image_hostObject



68
69
70
# File 'lib/kuby/docker/image.rb', line 68

def image_host
  @image_host ||= "#{image_uri.host}:#{image_uri.port}"
end

#image_hostnameObject



73
74
75
# File 'lib/kuby/docker/image.rb', line 73

def image_hostname
  @image_hostname ||= image_uri.host
end

#image_repoObject



78
79
80
# File 'lib/kuby/docker/image.rb', line 78

def image_repo
  @image_repo ||= image_uri.path
end

#image_uriObject



83
84
85
# File 'lib/kuby/docker/image.rb', line 83

def image_uri
  @full_image_uri ||= DockerURI.parse(image_url)
end

#new_versionObject

Raises:

  • (NotImplementedError)


44
45
46
# File 'lib/kuby/docker/image.rb', line 44

def new_version
  raise NotImplementedError, 'please use a Docker::Image subclass'
end

#previous_version(current_tag = nil) ⇒ Object

Raises:

  • (NotImplementedError)


54
55
56
# File 'lib/kuby/docker/image.rb', line 54

def previous_version(current_tag = nil)
  raise NotImplementedError, 'please use a Docker::Image subclass'
end

#push(tag) ⇒ Object

Raises:

  • (NotImplementedError)


98
99
100
# File 'lib/kuby/docker/image.rb', line 98

def push(tag)
  raise NotImplementedError, 'please use a Docker::Image subclass'
end

#tagsObject



88
89
90
# File 'lib/kuby/docker/image.rb', line 88

def tags
  [main_tag, *alias_tags].compact
end