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