module Rum

Rum Runner namespace.

Constants

VERSION

Rum Runner gem version.

Public Class Methods

init(input = nil, stdin = $stdin, stdout = $stdout, stderr = $stderr) click to toggle source

Helper to initialize a Rumfile

Example:

$ ruby -r rumrunner -e Rum.init > Rumfile
# File lib/rumrunner/init.rb, line 12
def init(input = nil, stdin = $stdin, stdout = $stdout, stderr = $stderr)
  # Get image name from $stdin
  image = gets_image input, stdin, stderr

  # Begin Rumfile
  stdout.write "#!/usr/bin/env ruby\n"
  stdout.write "rum :\"#{image.family}\" do\n"
  stdout.write parse_stages "Dockerfile" if File.exist? "Dockerfile"
  stdout.write "end\n"
end

Private Class Methods

gets_image(input = nil, stdin = $stdin, stderr = $stderr) click to toggle source

Get Docker image from input (taken from $stdin if nil)

# File lib/rumrunner/init.rb, line 27
def gets_image(input = nil, stdin = $stdin, stderr = $stderr)
  if input.nil?
    default = File.split(Dir.pwd).last
    stderr.write "Docker image name [#{default}]: "
    input = stdin.gets.chomp
  end
  Docker::Image.parse(input.empty? ? default : input)
end
parse_stages(dockerfile) click to toggle source

Parse stages from Dockerfile

# File lib/rumrunner/init.rb, line 38
def parse_stages(dockerfile)
  stages = File.read(dockerfile).scan(/^FROM .*? AS (.*?)$/).flatten
  deps   = [nil] + stages[0..-2]
  lines  = stages.zip(deps).map do |stage, dep|
    dep.nil? ? %{  stage :"#{stage}"\n} : %{  stage :"#{stage}" => :"#{dep}"\n}
  end.join
end