19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/milk_tea/lsp/dependency_resolution.rb', line 19
def self.resolve(path, mode: :auto)
normalized_mode = normalize_mode(mode)
return Resolved.new(mode: normalized_mode, locked: false, error_message: nil) unless path && File.file?(path)
case normalized_mode
when :live
Resolved.new(mode: normalized_mode, locked: false, error_message: nil)
when :auto
lock_result = PackageLock.check(path)
Resolved.new(mode: normalized_mode, locked: lock_result.current?, error_message: nil)
when :locked
Resolved.new(mode: normalized_mode, locked: true, error_message: nil)
when :frozen
lock_result = PackageLock.check(path)
if lock_result.current?
Resolved.new(mode: normalized_mode, locked: true, error_message: nil)
elsif lock_result.missing?
Resolved.new(mode: normalized_mode, locked: true, error_message: "package.lock is missing: #{lock_result.lock_path}")
else
Resolved.new(mode: normalized_mode, locked: true, error_message: "package.lock is out of date: #{lock_result.lock_path}")
end
end
rescue PackageManifestError
Resolved.new(mode: normalized_mode, locked: false, error_message: nil)
rescue PackageLockError => e
if normalized_mode == :auto
Resolved.new(mode: normalized_mode, locked: false, error_message: nil)
else
Resolved.new(mode: normalized_mode, locked: true, error_message: e.message)
end
end
|