class RBS::Collection::Sources::Git
Constants
- METADATA_FILENAME
Attributes
Public Class Methods
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/collection/sources/git.rb, line 19 def initialize(name:, revision:, remote:, repo_dir:) @name = name @remote = remote @repo_dir = repo_dir || 'gems' @revision = revision @need_setup = true end
Public Instance Methods
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/collection/sources/git.rb, line 27 def has?(name, version) setup! do if version (gems_versions[name] || Set[]).include?(version) else gems_versions.key?(name) end end end
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/collection/sources/git.rb, line 44 def install(dest:, name:, version:, stdout:) setup!() gem_dir = dest.join(name, version) colored_io = CLI::ColoredIO.new(stdout: stdout) case when gem_dir.symlink? colored_io.puts_green("Updating to #{format_config_entry(name, version)} from a local source") gem_dir.unlink _install(dest: dest, name: name, version: version) when gem_dir.directory? prev = load_metadata(dir: gem_dir) if prev == metadata_content(name: name, version: version) colored_io.puts "Using #{format_config_entry(name, version)}" else colored_io.puts_green("Updating to #{format_config_entry(name, version)} from #{format_config_entry(prev["name"], prev["version"])}") FileUtils.remove_entry_secure(gem_dir.to_s) _install(dest: dest, name: name, version: version) end when !gem_dir.exist? colored_io.puts_green("Installing #{format_config_entry(name, version)}") _install(dest: dest, name: name, version: version) else raise end end
(dir: Pathname) → metadata
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/collection/sources/git.rb, line 224 def load_metadata(dir:) # @type var content: Hash[String, untyped] content = YAML.load_file(dir.join(METADATA_FILENAME).to_s) _ = content.slice("name", "version", "source") end
Load .rbs_meta.yaml from the dir, where is the destination of the RBS file installation, and return the cleaned up content
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/collection/sources/git.rb, line 74 def manifest_of(name, version) setup! do path = File.join(repo_dir, name, version, 'manifest.yaml') content = git('cat-file', '-p', "#{resolved_revision}:#{path}") YAML.safe_load(content) rescue CommandError if has?(name, version) nil else raise end end end
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/collection/sources/git.rb, line 208 def metadata_content(name:, version:) { "name" => name, "version" => version, "source" => to_lockfile } end
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/collection/sources/git.rb, line 173 def resolved_revision @resolved_revision ||= begin if commit_hash? revision else setup! { git('rev-parse', "refs/remotes/origin/#{revision}").chomp } end end end
() → source_entry
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/collection/sources/git.rb, line 114 def to_lockfile { 'type' => 'git', 'name' => name, 'revision' => resolved_revision, 'remote' => remote, 'repo_dir' => repo_dir, } end
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/collection/sources/git.rb, line 37 def versions(name) setup! do versions = gems_versions[name] or raise "Git source `#{name}` doesn't have `#{name}`" versions.sort end end
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/lib/rbs/collection/sources/git.rb, line 216 def write_metadata(dir:, name:, version:) dir.join(METADATA_FILENAME).write( YAML.dump( metadata_content(name: name, version: version) ) ) end
Write .rbs_meta.yaml