#!/usr/bin/env ruby

require 'yaml'

class BuildpackVersionStorer
	def initialize(staging_buildpack_dir, cache_dir)
		@manifest_file = File.join(staging_buildpack_dir, 'manifest.yml')
		@staging_buildpack_version_file = File.join(staging_buildpack_dir, 'VERSION')
		@cache_dir = cache_dir
	end

	def run
		begin
			return unless File.exist? @manifest_file
			return unless File.exist? @staging_buildpack_version_file
			staging_buildpack_version = File.read(@staging_buildpack_version_file).strip
			return if staging_buildpack_version.strip.empty?

			manifest_yaml = YAML.load_file(@manifest_file)
			staging_buildpack_language = manifest_yaml['language']
			staged_buildpack_metadata_file = File.join(@cache_dir, 'BUILDPACK_METADATA')

			buildpack_metadata_to_write = {
				'language' => staging_buildpack_language,
				'version' => staging_buildpack_version
			}

			File.write(staged_buildpack_metadata_file, buildpack_metadata_to_write.to_yaml)
		rescue
		end
	end
end

BuildpackVersionStorer.new(ARGV[0], ARGV[1]).run
