class Tagfish::Update::Updater

Attributes

debug[R]

Public Class Methods

new(filters, debug = false) click to toggle source
# File lib/tagfish/update/updater.rb, line 10
def initialize(filters, debug = false)
  @filters = filters
  @debug = debug
end

Public Instance Methods

update(tokens) click to toggle source
# File lib/tagfish/update/updater.rb, line 15
def update(tokens)
  tokens.map do |token|
    if token.is_a_uri_token?
      update_uri_token(token)
    else
      token
    end
  end
end

Private Instance Methods

updatable?(uri) click to toggle source
# File lib/tagfish/update/updater.rb, line 37
def updatable?(uri)
  @filters.all? do |filter|
    filter.call uri
  end
end
update_uri(docker_uri) click to toggle source
# File lib/tagfish/update/updater.rb, line 43
def update_uri(docker_uri)
  docker_api = DockerRegistryClient.for(docker_uri, debug)
  tags = docker_api.tags
  newest_tag_name = tags.latest_tags.first
  if newest_tag_name.nil?
    docker_uri
  else
    docker_uri.with_tag(newest_tag_name)
  end
end
update_uri_token(token) click to toggle source
# File lib/tagfish/update/updater.rb, line 27
def update_uri_token(token)
  original_uri = DockerURI.parse(token)
  if updatable?(original_uri)
    updated_uri = update_uri(original_uri)
    Tokeniser::URI.new(updated_uri.to_s)
  else
    token
  end
end