File: rake_task.rb

package info (click to toggle)
ruby-docker-api 2.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 432 kB
  • sloc: ruby: 4,044; sh: 138; makefile: 5
file content (39 lines) | stat: -rw-r--r-- 655 bytes parent folder | download | duplicates (5)
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