class Rummager::ClickImage

Template to generate tasks for Docker Images

Attributes

add_files[RW]
dep_image[RW]
dep_other[RW]
image_args[RW]
image_name[RW]
noclean[RW]
repo_base[RW]
source[RW]

Public Class Methods

new(image_name,args={}) { |self| ... } click to toggle source
# File lib/rummager/images.rb, line 164
def initialize(image_name,args={})
  @image_name = image_name
  @repo_base = args.delete(:repo_base) || Rummager.repo_base
  @source = args.delete(:source)
  @add_files = args.delete(:add_files)
  if @source.nil?
    @source = Dir.new("./#{@image_name}/")
    puts "no direct source, use #{@source.path}" if Rake.verbose == true
  end
  @dep_image = args.delete(:dep_image)
  @dep_other = args.delete(:dep_other)
  @noclean = args.delete(:noclean)
  @image_args = args
  @image_args[:repo] = "#{@repo_base}/#{image_name}"
  puts "repo for #{@image_name} will be #{@image_args[:repo]}" if Rake.verbose == true
  @image_args[:tag] ||= 'latest'
  yield self if block_given?
  define
end

Public Instance Methods

define() click to toggle source
# File lib/rummager/images.rb, line 184
def define
  namespace "images" do
    namespace @image_name do
      
      rmitask = Rummager::ImageRMITask.define_task :rmi
      rmitask.repo = "#{@image_args[:repo]}"
      rmitask.tag = 'latest'
      
      buildtask = Rummager::ImageBuildTask.define_task :build
      buildtask.source = @source
      buildtask.repo = @image_args[:repo]
      buildtask.tag = buildtask.fingerprint
      buildtask.add_files = @add_files
      
    end # namespace
  end # namespace
  
  if @dep_image
    puts "'#{@image_name}' is dependent on '#{@dep_image}'" if Rake.verbose == true
    # forward prereq for build
    Rake::Task[:"images:#{@image_name}:build"].enhance( [ :"images:#{@dep_image}:build" ] )
    # reverse prereq on parent image for delete
    Rake::Task[:"images:#{@dep_image}:rmi"].enhance(["images:#{@image_name}:rmi"])
  end
  if @dep_other
    Rake.Task[:"images:#{@image_name}"].enhance( @dep_other )
  end
  
  if @noclean
    Rake::Task[:"images:clobber"].enhance( [ :"images:#{@image_name}:rmi"] )
    else
    Rake::Task[:"images:clean"].enhance( [ :"images:#{@image_name}:rmi"] )
  end
  
end