class Buildizer::Target::Base

Attributes

build_image[R]
builder[R]
cache_image[R]
os[R]
params[R]
test_image[R]

Public Class Methods

new(builder, os, name:, package_name:, package_version:, package_cloud: [], prepare: [], build_dep: [], before_build: [], maintainer: nil, test_options: {}, test_env: {}, test_image: nil, before_test: [], test: []) { || ... } click to toggle source
# File lib/buildizer/target/base.rb, line 13
def initialize(builder, os,
               name:, package_name:, package_version:, package_cloud: [],
               prepare: [], build_dep: [], before_build: [], maintainer: nil,
               test_options: {}, test_env: {}, test_image: nil, before_test: [], test: [],
               &blk)
  @builder = builder
  @os = os
  @params = {}

  params[:name] = name
  params[:package_name] = package_name
  params[:package_version] = package_version
  params[:package_cloud] = package_cloud
  params[:prepare] = prepare
  params[:build_dep] = build_dep
  params[:before_build] = before_build
  params[:maintainer] = maintainer
  params[:test_options] = test_options
  params[:test_env] = test_env
  params[:test_image] = test_image
  params[:before_test] = before_test
  params[:test] = test

  yield if block_given?

  @build_image = ::Buildizer::Image.new(build_image_name, self, from: os.base_image_name)
  @cache_image = ::Buildizer::Image.new(cache_image_name, self) if cache_image_name
  @test_image = ::Buildizer::Image.new(test_image_name, self)
end

Public Instance Methods

_package_cloud_path(repo) click to toggle source
# File lib/buildizer/target/base.rb, line 99
def _package_cloud_path(repo)
  "#{repo}/#{os.package_cloud_os_name}/#{os.package_cloud_os_version}"
end
base_package_name() click to toggle source
# File lib/buildizer/target/base.rb, line 73
def base_package_name
  params[:package_name].split('-').first
end
build_image_name() click to toggle source
# File lib/buildizer/target/base.rb, line 81
def build_image_name
  "#{params[:package_name]}:#{build_image_tag}"
end
build_image_tag() click to toggle source
# File lib/buildizer/target/base.rb, line 77
def build_image_tag
  params[:name].gsub('/', '__')
end
cache_image_name() click to toggle source
# File lib/buildizer/target/base.rb, line 85
def cache_image_name
  "#{os.docker.cache[:repo]}:#{build_image_tag}" if os.docker.cache
end
container_package_archive_name() click to toggle source
# File lib/buildizer/target/base.rb, line 115
def container_package_archive_name
  "#{container_package_name}.tar.gz"
end
container_package_archive_path() click to toggle source
# File lib/buildizer/target/base.rb, line 123
def container_package_archive_path
  Pathname.new('/').join(container_package_archive_name)
end
container_package_name() click to toggle source
# File lib/buildizer/target/base.rb, line 56
def container_package_name
  raise
end
container_package_path() click to toggle source
# File lib/buildizer/target/base.rb, line 119
def container_package_path
  Pathname.new('/').join(container_package_name)
end
image_build_path() click to toggle source
# File lib/buildizer/target/base.rb, line 103
def image_build_path
  image_work_path.join('build')
end
image_extra_path() click to toggle source
# File lib/buildizer/target/base.rb, line 107
def image_extra_path
  image_work_path.join('extra')
end
image_work_path() click to toggle source
# File lib/buildizer/target/base.rb, line 52
def image_work_path
  raise
end
maintainer_email() click to toggle source
# File lib/buildizer/target/base.rb, line 64
def maintainer_email
  match = params[:maintainer].match(/<(.*)>/) if params[:maintainer]
  match[1] if match
end
method_missing(name, *args, &blk) click to toggle source
Calls superclass method
# File lib/buildizer/target/base.rb, line 43
def method_missing(name, *args, &blk)
  param_name = name.to_sym
  if params.key? param_name
    params[param_name]
  else
    super
  end
end
package_cloud() click to toggle source
# File lib/buildizer/target/base.rb, line 93
def package_cloud
  params[:package_cloud].map do |desc|
    desc.merge(package_path: _package_cloud_path(desc[:repo]))
  end
end
package_version() click to toggle source
# File lib/buildizer/target/base.rb, line 69
def package_version
  params[:package_version].nil? ? nil : params[:package_version].to_s
end
package_version_tag() click to toggle source
# File lib/buildizer/target/base.rb, line 111
def package_version_tag
  send(package_version_tag_param_name)
end
package_version_tag_param_name() click to toggle source
# File lib/buildizer/target/base.rb, line 60
def package_version_tag_param_name
  raise
end
test_env() click to toggle source
# File lib/buildizer/target/base.rb, line 127
def test_env
  params[:test_env]
    .map {|var, values| Array(values).uniq.map {|value| {var => value}}}
    .reduce {|res, vars| res.product vars}
    .to_a
    .map {|vars|
      vars = [vars] unless vars.is_a? Array
      vars.reduce(&:merge)
    }
end
test_image_name() click to toggle source
# File lib/buildizer/target/base.rb, line 89
def test_image_name
  params[:test_image] || os.base_vendor_image_name
end