class BuildMetadata

Constants

UNKNOWN

Attributes

build_timestamp[R]
override_version[R]
template[R]

Public Class Methods

new(template, build_timestamp, override_version) click to toggle source
# File lib/bento/buildmetadata.rb, line 7
def initialize(template, build_timestamp, override_version)
  @template = template
  @build_timestamp = build_timestamp
  @override_version = override_version
end

Public Instance Methods

read() click to toggle source
# File lib/bento/buildmetadata.rb, line 13
def read
  {
    name:             name,
    version:          version,
    build_timestamp:  build_timestamp,
    git_revision:     git_revision,
    git_status:       git_clean? ? "clean" : "dirty",
    box_basename:     box_basename,
    template:         template_vars.fetch("template", UNKNOWN),
    packer:           packer_ver,
    vagrant:          vagrant_ver,
  }
end

Private Instance Methods

box_basename() click to toggle source
# File lib/bento/buildmetadata.rb, line 33
def box_basename
  "#{name.gsub("/", "__")}-#{version}"
end
git_clean?() click to toggle source
# File lib/bento/buildmetadata.rb, line 41
def git_clean?
  `git status --porcelain`.strip.empty?
end
git_revision() click to toggle source
# File lib/bento/buildmetadata.rb, line 37
def git_revision
  sha = `git rev-parse HEAD`.strip
end
merged_vars() click to toggle source
# File lib/bento/buildmetadata.rb, line 45
def merged_vars
  @merged_vars ||= begin
    if File.exist?("#{template}.variables.json")
      template_vars.merge(JSON.load(IO.read("#{template}.variables.json")))
    else
      template_vars
    end
  end
end
name() click to toggle source
# File lib/bento/buildmetadata.rb, line 55
def name
  merged_vars.fetch("name", template)
end
packer_ver() click to toggle source
# File lib/bento/buildmetadata.rb, line 72
def packer_ver
  cmd = Mixlib::ShellOut.new("packer --version")
  cmd.run_command
  cmd.stdout.split("\n")[0]
end
template_vars() click to toggle source
# File lib/bento/buildmetadata.rb, line 59
def template_vars
  @template_vars ||= JSON.load(IO.read("#{template}.json")).fetch("variables")
end
vagrant_ver() click to toggle source
# File lib/bento/buildmetadata.rb, line 78
def vagrant_ver
  if ENV["TRAVIS"]
    "travis"
  else
    cmd = Mixlib::ShellOut.new("vagrant --version")
    cmd.run_command
    cmd.stdout.split(" ")[1]
  end
end
version() click to toggle source
# File lib/bento/buildmetadata.rb, line 63
def version
  if override_version
    override_version
  else
    merged_vars.fetch("version", "#{UNKNOWN}.TIMESTAMP").
      rpartition(".").first.concat("#{build_timestamp}")
  end
end