module RepoFinder

Public Class Methods

repos_in_or_below(directory) click to toggle source
# File lib/repos_report/repo_finder.rb, line 6
def repos_in_or_below(directory)
  repos_in(directory) + repos_in_subdirectories_of(directory)
end

Private Class Methods

contains_repo?(directory_path) click to toggle source
# File lib/repos_report/repo_finder.rb, line 36
def contains_repo?(directory_path)
  Dir.glob("#{directory_path}/.git").any?
end
folders_with_repos_in(directory) click to toggle source
# File lib/repos_report/repo_finder.rb, line 18
def folders_with_repos_in(directory)
  directories = subdirectories_in(directory)
  directories.select { |d| contains_repo?(d) }
end
folders_without_repos_in(directory) click to toggle source
# File lib/repos_report/repo_finder.rb, line 31
def folders_without_repos_in(directory)
  directories = subdirectories_in(directory)
  directories.delete_if { |d| contains_repo?(d) }
end
repos_in(directory) click to toggle source
# File lib/repos_report/repo_finder.rb, line 14
def repos_in(directory)
  folders_with_repos_in(directory).map { |d| Repo.new(d) }
end
repos_in_subdirectories_of(directory) click to toggle source
# File lib/repos_report/repo_finder.rb, line 23
def repos_in_subdirectories_of(directory)
  subdirectories = folders_without_repos_in(directory)

  subdirectories.reduce([]) do |repos, subdirectory|
    repos + repos_in_or_below(subdirectory)
  end
end
subdirectories_in(directory) click to toggle source
# File lib/repos_report/repo_finder.rb, line 40
def subdirectories_in(directory)
  Dir.glob("#{directory}/*")
end