Module: Bundler::BuildMetadata

Defined in:
lib/bundler/build_metadata.rb

Overview

Represents metadata from when the Bundler gem was built.

Class Method Summary collapse

Class Method Details

.built_atObject

A string representing the date the bundler gem was built.


20
21
22
# File 'lib/bundler/build_metadata.rb', line 20

def self.built_at
  @built_at ||= Time.now.utc.strftime("%Y-%m-%d").freeze
end

.git_commit_shaObject

The SHA for the git commit the bundler gem was built from.


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/bundler/build_metadata.rb', line 25

def self.git_commit_sha
  return @git_commit_sha if instance_variable_defined? :@git_commit_sha

  # If Bundler has been installed without its .git directory and without a
  # commit instance variable then we can't determine its commits SHA.
  git_dir = File.join(File.expand_path("../../..", __FILE__), ".git")
  if File.directory?(git_dir)
    return @git_commit_sha = Dir.chdir(git_dir) { `git rev-parse --short HEAD`.strip.freeze }
  end

  # If Bundler is a submodule in RubyGems, get the submodule commit
  git_sub_dir = File.join(File.expand_path("../../../..", __FILE__), ".git")
  if File.directory?(git_sub_dir)
    return @git_commit_sha = Dir.chdir(git_sub_dir) do
      `git ls-tree --abbrev=8 HEAD bundler`.split(/\s/).fetch(2, "").strip.freeze
    end
  end

  @git_commit_sha ||= "unknown"
end

.release?Boolean

Whether this is an official release build of Bundler.

Returns:

  • (Boolean)

47
48
49
# File 'lib/bundler/build_metadata.rb', line 47

def self.release?
  @release
end

.to_hObject

A hash representation of the build metadata.


11
12
13
14
15
16
17
# File 'lib/bundler/build_metadata.rb', line 11

def self.to_h
  {
    "Built At" => built_at,
    "Git SHA" => git_commit_sha,
    "Released Version" => release?,
  }
end