1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
# This class allows image-based tasks to be created.
class Docker::ImageTask < Rake::Task
def self.scope_name(_scope, task_name)
task_name
end
def needed?
!has_repo_tag?
end
private
def has_repo_tag?
images.any? { |image| image.info['RepoTags'].include?(repo_tag) }
end
def images
@images ||= Docker::Image.all(:all => true)
end
def repo
name.split(':')[0]
end
def tag
name.split(':')[1] || 'latest'
end
def repo_tag
"#{repo}:#{tag}"
end
end
# Monkeypatch Rake to add the `image` task.
module Rake::DSL
def image(*args, &block)
Docker::ImageTask.define_task(*args, &block)
end
end
|