Module: Rocker::Docket

Defined in:
lib/rocker/docket.rb,
lib/rocker/docket/version.rb

Constant Summary collapse

VERSION =
'0.0.2'

Class Method Summary collapse

Class Method Details

.buildObject



9
10
11
12
13
# File 'lib/rocker/docket.rb', line 9

def build
  update unless File.exists? dockerfile
  write(dockerfile, ERB.new(File.read(template)).result(binding))
  exec "docker build -t rocker-docket #{dir}"
end

.dirObject



48
49
50
# File 'lib/rocker/docket.rb', line 48

def dir
  "#{ENV['HOME']}/.rocker-docket"
end

.dockerfileObject



36
37
38
# File 'lib/rocker/docket.rb', line 36

def dockerfile
  "#{dir}/Dockerfile"
end

.releases_stringObject



32
33
34
# File 'lib/rocker/docket.rb', line 32

def releases_string
  open("https://api.github.com/repos/coreos/rocket/releases"){ |f| f.read }
end

.rocket_urlObject



40
41
42
# File 'lib/rocker/docket.rb', line 40

def rocket_url
  File.read rocket_url_file if File.exists? rocket_url_file
end

.rocket_url_fileObject



44
45
46
# File 'lib/rocker/docket.rb', line 44

def rocket_url_file 
  "#{dir}/rocket_url"
end

.templateObject



15
16
17
# File 'lib/rocker/docket.rb', line 15

def template
  "#{File.join(File.dirname(__FILE__), 'Dockerfile.erb')}"
end

.updateObject



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rocker/docket.rb', line 19

def update
  release = JSON.parse(releases_string)[0]
  assets_url = release['assets_url']
  tag = release['tag_name']
  download_url = JSON.parse(open(assets_url){|f| f.read }).detect{ |a| a['name'] =~ /rocket.*.tar.gz/ }['browser_download_url']
  if download_url == rocket_url 
    nil
  else
    write(rocket_url_file, download_url)
    tag
  end
end