class RBS::Collection::Config

This class represent the configuration file.

Constants

PATH

Public Class Methods

find_config_path() click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 19
def self.find_config_path
  current = Pathname.pwd

  loop do
    config_path = current.join(PATH)
    return config_path if config_path.exist?
    current = current.join('..')
    return nil if current.root?
  end
end
from_path(path) click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 36
def self.from_path(path)
  new(YAML.load(path.read), config_path: path)
end
generate_lockfile(config_path:, gemfile_lock_path:, with_lockfile: true) click to toggle source

Generate a rbs lockfile from Gemfile.lock to ‘config_path`. If `with_lockfile` is true, it respects existing rbs lockfile.

# File rbs-2.8.2/lib/rbs/collection/config.rb, line 32
def self.generate_lockfile(config_path:, gemfile_lock_path:, with_lockfile: true)
  LockfileGenerator.generate(config_path: config_path, gemfile_lock_path: gemfile_lock_path, with_lockfile: with_lockfile)
end
lockfile_of(config_path) click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 40
def self.lockfile_of(config_path)
  lock_path = to_lockfile_path(config_path)
  from_path lock_path if lock_path.exist?
end
new(data, config_path:) click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 49
def initialize(data, config_path:)
  @data = data
  @config_path = config_path
end
to_lockfile_path(config_path) click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 45
def self.to_lockfile_path(config_path)
  config_path.sub_ext('.lock' + config_path.extname)
end

Public Instance Methods

add_gem(gem) click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 54
def add_gem(gem)
  gems << gem
end
check_rbs_availability!() click to toggle source

It raises an error when there are non-available libraries

# File rbs-2.8.2/lib/rbs/collection/config.rb, line 94
def check_rbs_availability!
  raise CollectionNotAvailable unless repo_path.exist?

  gems.each do |gem|
    case gem['source']['type']
    when 'git'
      meta_path = repo_path.join(gem['name'], gem['version'], Sources::Git::METADATA_FILENAME)
      raise CollectionNotAvailable unless meta_path.exist?
      raise CollectionNotAvailable unless gem == YAML.load(meta_path.read)
    end
  end
end
dump_to(io) click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 75
def dump_to(io)
  YAML.dump(@data, io)
end
gem(gem_name) click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 58
def gem(gem_name)
  gems.find { |gem| gem['name'] == gem_name }
end
gemfile_lock_path() click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 87
def gemfile_lock_path
  path = @data['gemfile_lock_path']
  return unless path
  @config_path.dirname.join path
end
gemfile_lock_path=(path) click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 83
def gemfile_lock_path=(path)
  @data['gemfile_lock_path'] = path.relative_path_from(@config_path.dirname).to_s
end
gems() click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 79
def gems
  @data['gems'] ||= []
end
repo_path() click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 62
def repo_path
  @config_path.dirname.join @data['path']
end
sources() click to toggle source
# File rbs-2.8.2/lib/rbs/collection/config.rb, line 66
def sources
  @sources ||= (
    @data['sources']
      .map { |c| Sources.from_config_entry(c) }
      .push(Sources::Stdlib.instance)
      .push(Sources::Rubygems.instance)
  )
end