class Prj::Finder

Public Class Methods

new(projects_root, options = {}) click to toggle source
# File lib/prj/finder.rb, line 6
def initialize(projects_root, options = {})
  @root = File.expand_path(projects_root)
  @vcs_directories = Array(options[:vcs_directories])
  @search_nested_repositories = !!options[:search_nested_repositories]
  @result = []
end

Public Instance Methods

find_project_directories() click to toggle source
# File lib/prj/finder.rb, line 13
def find_project_directories
  return @result unless @result.empty?
  FastTraverse.traverse(@root, @search_nested_repositories) do |parent_path, child_name|
    next false unless vcs_directory?(child_name)
    @result << normalize_path(parent_path)
  end
  @result
end

Private Instance Methods

normalize_path(path) click to toggle source
# File lib/prj/finder.rb, line 28
def normalize_path(path)
  path.sub(@root, "").chomp("/")
end
vcs_directory?(directory_name) click to toggle source
# File lib/prj/finder.rb, line 24
def vcs_directory?(directory_name)
  @vcs_directories.include? directory_name
end