Sha256: d483560b9d29f50c4ba992c65254b2a52cbed0931ce916cced8383904dbcd150

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

namespace :"docker" do

  def image_name file
    file.sub('Dockerfile.','')
  end

  def tag
    tag = `git reflog --decorate -1`.match(/tag: (?<tag>.*?),/)
    tag.nil? ? "latest" : tag[:tag]
  end

  def docker_repo
    "#{@docker_repo}/"
  end

  def run_before_hooks file
    File.open(file, 'r') {|f| @file = f.read }

    hooks = @file.scan(/^##=\s?(.*)/)
    hooks.each do |hook|
      sh hook.first
    end
  end

  files = Dir["Dockerfile*"]
  task :build => files.map { |file| "docker:build:#{image_name file}"}
  task :push => files.map { |file| "docker:push:#{image_name file}"}

  namespace :build do
    files.each do |file|
      desc "Build #{file}"
      task image_name(file).to_sym do
        run_before_hooks file
        sh "ln -snf #{file} Dockerfile"
        sh "docker build -t '#{docker_repo}#{image_name file}:#{tag}' ."
        sh "rm -f Dockerfile"
      end
    end
  end

  namespace :push do
    files.each do |file|
      desc "Push #{file}"
        task image_name(file).to_sym do
        sh "docker push '#{docker_repo}#{image_name file}:#{tag}'"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
docker-construct-0.0.1 tasks/docker-construct.rake