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