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