module PackerExec
  def for_packer_run_with(template)
    Tempfile.open("#{template}-metadata.json") do |md_file|
      Tempfile.open("#{template}-metadata-var-file") do |var_file|
        write_box_metadata(template, md_file)
        write_var_file(template, md_file, var_file)
        yield md_file, var_file
      end
    end
  end

  def write_box_metadata(template, io)
    md = BuildMetadata.new(template, build_timestamp, override_version).read
    io.write(JSON.pretty_generate(md))
    io.close
  end

  def write_var_file(template, md_file, io)
    md = BuildMetadata.new(template, build_timestamp, override_version).read

    io.write(JSON.pretty_generate({
      box_basename:     md[:box_basename],
      build_timestamp:  md[:build_timestamp],
      git_revision:     md[:git_revision],
      metadata:         md_file.path,
      version:          md[:version],
    }))
    io.close
  end
end