class Getv::Package::Docker

Getv::Package::Docker class

Public Class Methods

new(name, opts = {}) click to toggle source
Calls superclass method Getv::Package::new
# File lib/getv/package/docker.rb, line 7
def initialize(name, opts = {})
  opts = defaults.merge(opts)
  opts = { user: nil, password: nil }.merge(opts)
  opts = docker_defaults(name).merge(opts)
  super name, opts
end

Private Instance Methods

docker_defaults(name) click to toggle source
# File lib/getv/package/docker.rb, line 16
def docker_defaults(name)
  case name.count('/')
  when 0
    { owner: 'library', repo: name, url: 'https://registry.hub.docker.com' }
  when 1
    { owner: name.split('/')[0], repo: name.split('/')[1],
      url: 'https://registry.hub.docker.com' }
  else
    { owner: name.split('/')[1], repo: name.split('/')[2..-1].join('/'),
      url: "https://#{name.split('/')[0]}" }
  end
end
docker_opts() click to toggle source
# File lib/getv/package/docker.rb, line 29
def docker_opts
  d_opts = {}
  d_opts[:http_options] = { proxy: opts[:proxy] } unless opts[:proxy].nil?
  if opts[:user] && opts[:password]
    d_opts[:user] = opts[:user]
    d_opts[:password] = opts[:password]
  end
  d_opts
end
retrieve_versions() click to toggle source
# File lib/getv/package/docker.rb, line 39
def retrieve_versions
  require 'docker_registry2'
  retries ||= 0
  docker = DockerRegistry2.connect(opts[:url], docker_opts)
  docker.tags("#{opts[:owner]}/#{opts[:repo]}")['tags'] || []
rescue DockerRegistry2::NotFound
  []
rescue StandardError
  retry if (retries += 1) < 4
end