sig/collection/sources.rbs in rbs-2.8.4 vs sig/collection/sources.rbs in rbs-3.0.0.dev.1

- old
+ new

@@ -1,29 +1,34 @@ module RBS module Collection module Sources - def self.from_config_entry: (source_entry) -> _Source + def self.from_config_entry: (Git::source_entry) -> Git + | (source_entry) -> t interface _Source - def has?: (Config::gem_entry) -> boolish - def versions: (Config::gem_entry) -> Array[String] - def install: (dest: Pathname, config_entry: Config::gem_entry, stdout: CLI::_IO) -> void + def has?: (String name, String? version) -> boolish + def versions: (String name) -> Array[String] + def install: (dest: Pathname, name: String, version: String, stdout: CLI::_IO) -> void def to_lockfile: () -> source_entry - def manifest_of: (Config::gem_entry) -> manifest_entry? - def dependencies_of: (Config::gem_entry) -> Array[{"name" => String}]? + def manifest_of: (String name, String version) -> manifest_entry? + def dependencies_of: (String name, String version) -> Array[manifest_dependency]? end + type t = Git | Stdlib | Rubygems + type source_entry = Git::source_entry | Stdlib::source_entry | Rubygems::source_entry type manifest_entry = { - "dependencies" => Array[{"name" => String}]?, + "dependencies" => Array[manifest_dependency]?, } + type manifest_dependency = { "name" => String } + module Base : _Source - def dependencies_of: (Config::gem_entry config_entry) -> Array[{"name" => String}]? + def dependencies_of: (String name, String version) -> Array[manifest_dependency]? end class Git include Base @@ -41,52 +46,80 @@ end attr_reader name: String attr_reader remote: String attr_reader repo_dir: String + attr_reader revision: String def initialize: (name: String, revision: String, remote: String, repo_dir: String?) -> untyped - def has?: (Config::gem_entry) -> bool + def has?: (String name, String? version) -> boolish - def versions: (Config::gem_entry) -> Array[String] + def versions: (String name) -> Array[String] - def install: (dest: Pathname, config_entry: Config::gem_entry, stdout: CLI::_IO) -> void + def install: (dest: Pathname, name: String, version: String, stdout: CLI::_IO) -> void def to_lockfile: () -> source_entry - def manifest_of: (Config::gem_entry) -> manifest_entry? + def manifest_of: (String name, String version) -> manifest_entry? + def resolved_revision: () -> String + private + @need_setup: bool + @git_dir: Pathname? @resolved_revision: String? - def _install: (dest: Pathname , config_entry: Config::gem_entry) -> void + @gems_versions: Hash[String, Set[String]]? + def _install: (dest: Pathname , name: String, version: String) -> void + def cp_r: (Pathname, Pathname) -> void - def setup!: (revision: String) -> void + # Ensure the git repository status is expected one + # + # * It exists, and + # * The `HEAD` is the `revision` + # + def setup!: [T] () { () -> T } -> T + | () -> void - def need_to_fetch?: (String revision ) -> bool + def need_to_fetch?: (String revision) -> bool def git_dir: () -> Pathname def gem_repo_dir: () -> Pathname def with_revision: [T] () { () -> T } -> T - def resolved_revision: () -> String + # Returns `true` if `revision` looks like a commit hash + # + def commit_hash?: () -> bool - def resolve_revision: () -> String - def git: (*String cmd, **untyped opt) -> String + def git?: (*String cmd, **untyped opt) -> String? + def sh!: (*String cmd, **untyped opt) -> String - def format_config_entry: (Config::gem_entry) -> String + def format_config_entry: (String name, String version) -> String + + type metadata = { 'name' => String, 'version' => String, 'source' => source_entry } + + def metadata_content: (name: String, version: String) -> metadata + + # Write `.rbs_meta.yaml` + def write_metadata: (dir: Pathname, name: String, version: String) -> void + + # Load `.rbs_meta.yaml` from the `dir`, where is the destination of the RBS file installation, and return the cleaned up content + # + def load_metadata: (dir: Pathname) -> metadata + + def gems_versions: () -> Hash[String, Set[String]] end # signatures that are bundled in rbs gem under the stdlib/ directory class Stdlib @@ -99,23 +132,23 @@ } # polyfill of singleton module def self.instance: () -> instance - def has?: (Config::gem_entry) -> boolish + def has?: (String name, String? version) -> boolish - def versions: (Config::gem_entry) -> Array[String] + def versions: (String name) -> Array[String] - def install: (dest: Pathname, config_entry: Config::gem_entry, stdout: CLI::_IO) -> void + def install: (dest: Pathname, name: String, version: String, stdout: CLI::_IO) -> void def to_lockfile: () -> source_entry - def manifest_of: (Config::gem_entry) -> manifest_entry? + def manifest_of: (String name, String version) -> manifest_entry? private - def lookup: (Config::gem_entry) -> Pathname? + def lookup: (String name, String? version) -> Pathname? end # sig/ directory class Rubygems include Base @@ -125,18 +158,22 @@ } # polyfill of singleton module def self.instance: () -> instance - def has?: (Config::gem_entry) -> boolish - def versions: (Config::gem_entry) -> Array[String] - def install: (dest: Pathname, config_entry: Config::gem_entry, stdout: CLI::_IO) -> void + def has?: (String name, String? version) -> boolish + + def versions: (String name) -> Array[String] + + def install: (dest: Pathname, name: String, version: String, stdout: CLI::_IO) -> void + def to_lockfile: () -> source_entry - def manifest_of: (Config::gem_entry) -> manifest_entry? + def manifest_of: (String name, String version) -> manifest_entry? + private - def gem_sig_path: (Config::gem_entry) -> [Gem::Specification, Pathname]? + def gem_sig_path: (String name, String? version) -> [Gem::Specification, Pathname]? end end end end