lib/rbs/collection/sources/git.rb in rbs-1.6.2 vs lib/rbs/collection/sources/git.rb in rbs-1.7.0.beta.1

- old
+ new

@@ -1,7 +1,8 @@ require 'digest/sha2' require 'open3' +require 'find' module RBS module Collection module Sources class Git @@ -50,15 +51,29 @@ end private def _install(dest:, config_entry:) gem_name = config_entry['name'] version = config_entry['version'] or raise - dest = dest.join(gem_name) + dest = dest.join(gem_name, version) dest.mkpath src = gem_repo_dir.join(gem_name, version) - FileUtils.cp_r(src, dest) - dest.join(version, METADATA_FILENAME).write(YAML.dump(config_entry)) + cp_r(src, dest) + dest.join(METADATA_FILENAME).write(YAML.dump(config_entry)) + end + + private def cp_r(src, dest) + Find.find(src) do |file_src| + file_src = Pathname(file_src) + + # Skip file if it starts with _, such as _test/ + Find.prune if file_src.basename.to_s.start_with?('_') + + file_src_relative = file_src.relative_path_from(src) + file_dest = dest.join(file_src_relative) + file_dest.dirname.mkpath + FileUtils.copy_entry(file_src, file_dest, false, true) unless file_src.directory? + end end def to_lockfile { 'type' => 'git',