Class: MilkTea::PackageSourceResolver
- Inherits:
-
Object
- Object
- MilkTea::PackageSourceResolver
show all
- Defined in:
- lib/milk_tea/packages/source_resolver.rb
Defined Under Namespace
Classes: GitIdentity, PathIdentity, RegistryDependencyKey, RegistryIdentity, ResolvedPackage, Source, SourceIdentity
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(source_cache: PackageSourceCache.new, remote_resolution: :reject, source_fetcher: nil, resolved_registry_versions: nil) ⇒ PackageSourceResolver
Returns a new instance of PackageSourceResolver.
175
176
177
178
179
180
|
# File 'lib/milk_tea/packages/source_resolver.rb', line 175
def initialize(source_cache: PackageSourceCache.new, remote_resolution: :reject, source_fetcher: nil, resolved_registry_versions: nil)
@source_cache = source_cache
@remote_resolution = remote_resolution
@source_fetcher = source_fetcher
@resolved_registry_versions = normalize_resolved_registry_versions(resolved_registry_versions)
end
|
Instance Attribute Details
#resolved_registry_versions ⇒ Object
Returns the value of attribute resolved_registry_versions.
9
10
11
|
# File 'lib/milk_tea/packages/source_resolver.rb', line 9
def resolved_registry_versions
@resolved_registry_versions
end
|
Class Method Details
.registry_dependency_key(parent_source_key:, dependency_name:) ⇒ Object
168
169
170
171
172
173
|
# File 'lib/milk_tea/packages/source_resolver.rb', line 168
def self.registry_dependency_key(parent_source_key:, dependency_name:)
RegistryDependencyKey.new(
parent_source_key: parent_source_key.to_s,
dependency_name: dependency_name.to_s,
)
end
|
.source_key_for_identity(identity) ⇒ Object
161
162
163
164
165
166
|
# File 'lib/milk_tea/packages/source_resolver.rb', line 161
def self.source_key_for_identity(identity)
return "path:#{File.expand_path(identity.path)}" if identity.is_a?(PathIdentity)
return "#{identity.kind}:#{identity.cache_key}" if identity.cache_key
raise PackageSourceResolverError, "unsupported source identity #{identity.class} for registry dependency key"
end
|
Instance Method Details
#identity_from_lock(entry, lock_path) ⇒ Object
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
# File 'lib/milk_tea/packages/source_resolver.rb', line 202
def identity_from_lock(entry, lock_path)
source_kind = entry["source_kind"].to_s
case source_kind
when "path"
source_path = entry["source_path"].to_s
raise PackageSourceResolverError, "package.lock missing source_path in #{lock_path}" if source_path.empty?
PathIdentity.new(source_path)
when "registry"
RegistryIdentity.new(
package_name: entry["registry_package"],
version: entry["registry_version"],
)
when "git"
GitIdentity.new(
url: entry["git_url"],
revision: entry["git_rev"],
subdir: entry["git_subdir"],
)
else
raise PackageSourceResolverError,
"unsupported package source_kind #{source_kind.inspect} in #{lock_path}; supported kinds are path, registry, and git"
end
end
|
#resolve(dependency, parent_manifest:, parent_source: nil) ⇒ Object
228
229
230
231
232
233
234
235
236
237
238
239
240
|
# File 'lib/milk_tea/packages/source_resolver.rb', line 228
def resolve(dependency, parent_manifest:, parent_source: nil)
if dependency.path
manifest = PackageManifest.load(dependency.path)
validate_fixed_dependency_version_requirement!(dependency, manifest, parent_manifest:)
return ResolvedPackage.new(manifest:, source: source_for_manifest(manifest))
end
return resolve_registry_dependency(dependency, parent_manifest:, parent_source:) if dependency.registry?
return resolve_git_dependency(dependency, parent_manifest:) if dependency.git
raise PackageSourceResolverError,
"dependency #{dependency.name} in #{parent_manifest.manifest_path} has no supported source resolver"
end
|
#source_for_manifest(manifest) ⇒ Object
195
196
197
198
199
200
|
# File 'lib/milk_tea/packages/source_resolver.rb', line 195
def source_for_manifest(manifest)
Source.new(
identity: PathIdentity.new(manifest.root_dir),
local_root: manifest.root_dir,
)
end
|
#source_from_lock(entry, lock_path) ⇒ Object
242
243
244
245
246
247
|
# File 'lib/milk_tea/packages/source_resolver.rb', line 242
def source_from_lock(entry, lock_path)
identity = identity_from_lock(entry, lock_path)
source_for_identity(identity, lock_path)
rescue PackageSourceCacheError => e
raise PackageSourceResolverError, e.message
end
|
#supports_dependency_solving? ⇒ Boolean
182
183
184
|
# File 'lib/milk_tea/packages/source_resolver.rb', line 182
def supports_dependency_solving?
@remote_resolution != :reject
end
|
#with_resolved_registry_versions(resolved_registry_versions) ⇒ Object
186
187
188
189
190
191
192
193
|
# File 'lib/milk_tea/packages/source_resolver.rb', line 186
def with_resolved_registry_versions(resolved_registry_versions)
self.class.new(
source_cache: @source_cache,
remote_resolution: @remote_resolution,
source_fetcher: @source_fetcher,
resolved_registry_versions:,
)
end
|