diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2017-06-13 08:48:33 -0500 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2017-06-13 08:48:33 -0500 |
commit | 3c552274695aae4439ce0a6d83dd36c8179089cf (patch) | |
tree | c999cd5116f480f525026bb672cdac5587146724 /task | |
parent | 85992a5d4a25712c7367f889e9f3589928449673 (diff) | |
download | bundler-3c552274695aae4439ce0a6d83dd36c8179089cf.tar.gz |
Avoid git shenanigans with the build metadata fileseg-version-build-metadata
Diffstat (limited to 'task')
-rw-r--r-- | task/build_metadata.rake | 37 | ||||
-rw-r--r-- | task/git_hooks.rake | 12 | ||||
-rw-r--r-- | task/release.rake | 7 |
3 files changed, 32 insertions, 24 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 diff --git a/task/git_hooks.rake b/task/git_hooks.rake index 0b8aab2ff9..e70d66afaa 100644 --- a/task/git_hooks.rake +++ b/task/git_hooks.rake @@ -1,18 +1,6 @@ # frozen_string_literal: true directory ".git/hooks" -file ".git/hooks/post-commit" => [__FILE__] do |t| - File.open(t.name, "w") {|f| f << <<-SH } -#! /usr/bin/env sh - -set -e - -.git/hooks/run-ruby bin/rake generate_files - SH - - chmod 0o755, t.name, :verbose => false -end - file ".git/hooks/pre-commit" => [__FILE__] do |t| File.open(t.name, "w") {|f| f << <<-SH } #!/bin/sh diff --git a/task/release.rake b/task/release.rake index 104fe1f857..8feaec3ae4 100644 --- a/task/release.rake +++ b/task/release.rake @@ -1,4 +1,11 @@ # frozen_string_literal: true + +require "bundler/gem_tasks" +task :build => ["build_metadata", "man:build", "generate_files"] do + Rake::Task["build_metadata:clean"].tap(&:reenable).real_invoke +end +task :release => ["man:require", "man:build", "build_metadata"] + namespace :release do def confirm(prompt = "") loop do |