task/build_metadata.rake
# frozen_string_literal: true
def bundler_spec
Gem::Specification.load("bundler.gemspec")
end
def write_build_metadata(build_metadata)
build_metadata_file = "lib/bundler/build_metadata.rb"
ivars = build_metadata.sort.map do |k, v|
" @#{k} = #{bundler_spec.send(:ruby_code, v)}"
end.join("\n")
contents = File.read(build_metadata_file)
contents.sub!(/^(\s+# begin ivars).+(^\s+# end ivars)/m, "\\1\n#{ivars}\n\\2")
File.open(build_metadata_file, "w") {|f| f << contents }
end
task :build_metadata do
build_metadata = {
:built_at => bundler_spec.date.utc.strftime("%Y-%m-%d"),
:git_commit_sha => `git rev-parse --short HEAD`.strip,
:release => Rake::Task["release"].instance_variable_get(:@already_invoked),
}
write_build_metadata(build_metadata)
end
namespace :build_metadata do
task :clean do
build_metadata = {
:release => false,
}
write_build_metadata(build_metadata)
end
end