module Licensed::Git

Public Class Methods

available?() click to toggle source

Returns whether git commands are available

# File lib/licensed/git.rb, line 6
def available?
  @git ||= Licensed::Shell.tool_available?("git")
end
commit_date(sha) click to toggle source

Returns the commit date for the provided SHA as a timestamp

sha - commit sha to retrieve date

# File lib/licensed/git.rb, line 36
def commit_date(sha)
  return unless git_repo? && sha
  Licensed::Shell.execute("git", "show", "-s", "-1", "--format=%ct", sha)
end
files() click to toggle source

Returns the files in the git repository from ‘git ls-files –recurse-submodules`

# File lib/licensed/git.rb, line 42
def files
  return unless git_repo?
  output = Licensed::Shell.execute("git", "ls-files", "--full-name", "--recurse-submodules")
  output.lines.map(&:strip)
end
git_repo?() click to toggle source

Returns true if a git repository is found, false otherwise

# File lib/licensed/git.rb, line 20
def git_repo?
  !repository_root.to_s.empty?
end
repository_root() click to toggle source

Returns the root of the current git repository or nil if not in a git repository.

# File lib/licensed/git.rb, line 12
def repository_root
  return unless available?
  root = Licensed::Shell.execute("git", "rev-parse", "--show-toplevel", allow_failure: true)
  return nil if root.empty?
  root
end
version(descriptor) click to toggle source

Returns the most recent git SHA for a file or directory or nil if SHA is not available

descriptor - file or directory to retrieve latest SHA for

# File lib/licensed/git.rb, line 28
def version(descriptor)
  return unless git_repo? && descriptor
  Licensed::Shell.execute("git", "rev-list", "-1", "HEAD", "--", descriptor, allow_failure: true)
end