Sha256: 2014023af0a6189aeea6b92ac4bb160fcd75a58d9907c7a49a49e2c71d9ecee7
Contents?: true
Size: 1.46 KB
Versions: 8
Compression:
Stored size: 1.46 KB
Contents
module LicenseFinder class ProjectFinder def initialize(main_project_path) @package_managers = LicenseFinder::Scanner::PACKAGE_MANAGERS @main_project_path = main_project_path end def find_projects project_paths = [] all_paths = find_all_paths until all_paths.empty? project_paths << collect_project_path(all_paths) all_paths.shift end project_paths.compact end def collect_project_path(all_paths) potential_project_path = all_paths.first is_active_project = active_project?(potential_project_path) return unless is_active_project remove_nested(potential_project_path, all_paths) potential_project_path.to_s end private def find_all_paths Dir.glob("#{@main_project_path}/**/").map { |path| full_path(path) } end def remove_nested(pathname, paths) return if project_root?(pathname) paths.reject! { |path| nested_path?(path, pathname) } end def project_root?(pathname) full_path(@main_project_path).to_s == pathname.to_s end def active_project?(project_path) active_project = @package_managers.map do |pm| pm.new(project_path: project_path).active? end active_project.include?(true) end def full_path(rel_path) Pathname.new(rel_path).expand_path end def nested_path?(path, pathname) path.to_s.start_with?(pathname.to_s) && path.to_s != pathname.to_s end end end
Version data entries
8 entries across 8 versions & 1 rubygems