class Licensee::GitProject

Constants

MAX_LICENSE_SIZE

Attributes

repository[R]
revision[R]

Public Class Methods

new(repo, revision: nil, **args) click to toggle source
Calls superclass method Licensee::Project.new
# File lib/licensee/projects/git_project.rb, line 10
def initialize(repo, revision: nil, **args)
  @repository = if repo.is_a? Rugged::Repository
    repo
  else
    Rugged::Repository.new(repo)
  end

  @revision = revision
  super(**args)
rescue Rugged::OSError, Rugged::RepositoryError
  raise InvalidRepository
end

Public Instance Methods

close() click to toggle source
# File lib/licensee/projects/git_project.rb, line 23
def close
  @repository.close
end

Private Instance Methods

commit() click to toggle source
# File lib/licensee/projects/git_project.rb, line 29
def commit
  @commit ||= if revision
    repository.lookup(revision)
  else
    repository.last_commit
  end
end
find_file() { |entry) > 0| ... } click to toggle source
# File lib/licensee/projects/git_project.rb, line 44
def find_file
  files = commit.tree.map do |entry|
    next unless entry[:type] == :blob
    if (score = yield entry[:name]) > 0
      { name: entry[:name], oid: entry[:oid], score: score }
    end
  end.compact

  return if files.empty?
  files.sort! { |a, b| b[:score] <=> a[:score] }

  f = files.first
  [load_blob_data(f[:oid]), f[:name]]
end
load_blob_data(oid) click to toggle source
# File lib/licensee/projects/git_project.rb, line 39
def load_blob_data(oid)
  data, = Rugged::Blob.to_buffer(repository, oid, MAX_LICENSE_SIZE)
  data
end