Sha256: 67e1864be0451dc69998ab11cee38abcc2ee1527c736d46f56174bfbe8e4e68e

Contents?: true

Size: 1.99 KB

Versions: 3

Compression:

Stored size: 1.99 KB

Contents

class Indocker::Images::Image
  attr_reader :name, :compile, :compile_rpaths, :dependent_images, :build_args

  def initialize(name)
    @compile = false
    @name = name
    @dependent_images = []
    @build_args = {}
  end

  def image_name
    "#{@name}_image"
  end

  def set_tag(tag)
    @tag = tag
  end

  def tag
    @tag || (raise ArgumentError.new("tag is not set for image :#{@name}"))
  end

  def set_build_args(opts)
    @build_args = opts
  end

  def set_registry(registry)
    @registry = registry
  end

  def registry
    @registry || (raise ArgumentError.new("registry is not set for image :#{@name}"))
  end

  def set_dockerfile(path)
    @dockerfile = path
  end

  def compile?(path)
    return false if !@compile
    return true if @compile_rpaths.empty?
    return true if @compile_rpaths.any? { |rpath| path.include?(rpath) }
    return false
  end

  def set_compile(flag_or_rpaths)
    @compile_rpaths = []

    if flag_or_rpaths == false
      @compile = false
      return
    end

    @compile = true

    if flag_or_rpaths.is_a?(Array)
      @compile_rpaths = flag_or_rpaths
    end

    @dockerfile = path
  end

  def dockerfile
    @dockerfile || (raise ArgumentError.new("Dockerfile path is not set for image :#{@name}"))
  end

  def set_build_context(path)
    @build_context = path
  end

  def build_context
    @build_context
  end

  def set_before_build(proc)
    @before_build = proc
  end

  def before_build
    @before_build
  end

  def set_after_build(proc)
    @after_build = proc
  end

  def after_build
    @after_build
  end

  def registry_url
    url = if registry.is_local?
      File.join(registry.repository_name.to_s, image_name)
    else
      File.join(registry.url, registry.repository_name.to_s, image_name)
    end

    "#{url}:#{tag}"
  end

  def local_registry_url
    url = File.join(registry.repository_name.to_s, image_name)
    "#{url}:#{tag}"
  end

  def add_dependent_image(image)
    @dependent_images.push(image) if !@dependent_images.include?(image)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
indocker-0.3.4 lib/indocker/images/image.rb
indocker-0.3.3 lib/indocker/images/image.rb
indocker-0.3.2 lib/indocker/images/image.rb