Class: Gitloc

Inherits:
Object
  • Object
show all
Defined in:
lib/gitloc.rb,
lib/gitloc/binary.rb,
lib/gitloc/errors.rb,
lib/gitloc/version.rb,
lib/gitloc/line_counts.rb

Defined Under Namespace

Modules: LineCounts Classes: Binary, RepoDoesNotExistError

Constant Summary collapse

Error =
Class.new StandardError
VERSION =
'0.2.0'

Class Method Summary collapse

Class Method Details

.call(repo) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/gitloc.rb', line 9

def self.call(repo)
  names_to_bodies = Dir.mktmpdir { |dir|
    Dir.chdir dir
    out, err, status = Open3.capture3 'git', 'clone', repo, 'cloned'
    raise RepoDoesNotExistError, repo unless status.success?
    Dir.chdir 'cloned'
    Dir['**/*'].reject { |name| File.directory? name }
               .map    { |name| [name, File.read(name) ] }
  }

  LineCounts.call(names_to_bodies)
end