summaryrefslogtreecommitdiff
path: root/task
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-06-13 08:48:33 -0500
committerSamuel Giddins <segiddins@segiddins.me>2017-06-13 08:48:33 -0500
commit3c552274695aae4439ce0a6d83dd36c8179089cf (patch)
treec999cd5116f480f525026bb672cdac5587146724 /task
parent85992a5d4a25712c7367f889e9f3589928449673 (diff)
downloadbundler-3c552274695aae4439ce0a6d83dd36c8179089cf.tar.gz
Avoid git shenanigans with the build metadata fileseg-version-build-metadata
Diffstat (limited to 'task')
-rw-r--r--task/build_metadata.rake37
-rw-r--r--task/git_hooks.rake12
-rw-r--r--task/release.rake7
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