diff options
Diffstat (limited to 'task/build_metadata.rake')
-rw-r--r-- | task/build_metadata.rake | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/task/build_metadata.rake b/task/build_metadata.rake index a896ed4801..e06a795259 100644 --- a/task/build_metadata.rake +++ b/task/build_metadata.rake @@ -1,20 +1,33 @@ # frozen_string_literal: true -file "lib/bundler/generated/build_metadata.rb" => [".git/HEAD", ".git/logs/HEAD", __FILE__, :git_hooks] do |t| - sh "git update-index --assume-unchanged #{t.name}", :verbose => false +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.strftime("%Y-%m-%d"), - :git_sha => `git rev-parse --short HEAD`.strip, + :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), } - File.open(t.name, "w") {|f| f << <<-RUBY } -# frozen_string_literal: true - -module Bundler - BUILD_METADATA = { -#{build_metadata.sort.map {|k, v| " #{k.inspect} => #{BUNDLER_SPEC.send(:ruby_code, v)}," }.join("\n")} - }.freeze + write_build_metadata(build_metadata) end - RUBY + +namespace :build_metadata do + task :clean do + build_metadata = { + :release => false, + } + + write_build_metadata(build_metadata) + end end |