class RBS::Collection::Config::Lockfile
Attributes
gemfile_lock_path[R]
gems[R]
lockfile_dir[R]
lockfile_path[R]
path[R]
sources[R]
Public Class Methods
from_lockfile(lockfile_path:, data:)
click to toggle source
# File rbs-3.2.1/lib/rbs/collection/config/lockfile.rb, line 55 def self.from_lockfile(lockfile_path:, data:) path = Pathname(data["path"]) if p = data["gemfile_lock_path"] gemfile_lock_path = Pathname(p) end lockfile = Lockfile.new(lockfile_path: lockfile_path, path: path, gemfile_lock_path: gemfile_lock_path) if sources = data["sources"] sources.each do |src| git = Sources::Git.new( name: src["name"], revision: src["revision"], remote: src["remote"], repo_dir: src["repo_dir"] ) lockfile.sources[git.name] = git end end if gems = data["gems"] gems.each do |gem| src = gem["source"] source = Sources.from_config_entry(src, base_directory: lockfile_path.dirname) lockfile.gems[gem["name"]] = { name: gem["name"], version: gem["version"], source: source } end end lockfile end
new(lockfile_path:, path:, gemfile_lock_path:)
click to toggle source
# File rbs-3.2.1/lib/rbs/collection/config/lockfile.rb, line 9 def initialize(lockfile_path:, path:, gemfile_lock_path:) @lockfile_path = lockfile_path @lockfile_dir = lockfile_path.parent @path = path @gemfile_lock_path = gemfile_lock_path @sources = {} @gems = {} end
Public Instance Methods
check_rbs_availability!()
click to toggle source
# File rbs-3.2.1/lib/rbs/collection/config/lockfile.rb, line 98 def check_rbs_availability! raise CollectionNotAvailable unless fullpath.exist? gems.each_value do |gem| source = gem[:source] case source when Sources::Git meta_path = fullpath.join(gem[:name], gem[:version], Sources::Git::METADATA_FILENAME) raise CollectionNotAvailable unless meta_path.exist? raise CollectionNotAvailable unless library_data(gem) == YAML.load(meta_path.read) when Sources::Local raise CollectionNotAvailable unless fullpath.join(gem[:name], gem[:version]).symlink? end end end
each_source() { |instance| ... }
click to toggle source
# File rbs-3.2.1/lib/rbs/collection/config/lockfile.rb, line 29 def each_source(&block) if block sources.each_value(&block) yield Sources::Rubygems.instance yield Sources::Stdlib.instance else enum_for :each_source end end
fullpath()
click to toggle source
# File rbs-3.2.1/lib/rbs/collection/config/lockfile.rb, line 19 def fullpath lockfile_dir + path end
gemfile_lock_fullpath()
click to toggle source
# File rbs-3.2.1/lib/rbs/collection/config/lockfile.rb, line 23 def gemfile_lock_fullpath if gemfile_lock_path lockfile_dir + gemfile_lock_path end end
library_data(lib)
click to toggle source
# File rbs-3.2.1/lib/rbs/collection/config/lockfile.rb, line 90 def library_data(lib) { "name" => lib[:name], "version" => lib[:version], "source" => lib[:source].to_lockfile } end
to_lockfile()
click to toggle source
# File rbs-3.2.1/lib/rbs/collection/config/lockfile.rb, line 39 def to_lockfile # @type var data: lockfile_data data = { "sources" => sources.each_value.sort_by {|s| s.name }.map {|source| source.to_lockfile }, "path" => path.to_s, "gems" => gems.each_value.sort_by {|g| g[:name] }.map {|hash| library_data(hash) }, "gemfile_lock_path" => gemfile_lock_path.to_s } data.delete("sources") if sources.empty? data.delete("gems") if gems.empty? data end