2020-10-10 14:16:11 +02:00
|
|
|
# typed: true
|
2020-07-29 12:20:23 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2020-11-05 17:17:03 -05:00
|
|
|
# An adapter for casks to provide dependency information in a formula-like interface.
|
2020-07-29 09:14:39 -04:00
|
|
|
class CaskDependent
|
|
|
|
def initialize(cask)
|
|
|
|
@cask = cask
|
|
|
|
end
|
|
|
|
|
|
|
|
def name
|
|
|
|
@cask.token
|
|
|
|
end
|
|
|
|
|
|
|
|
def full_name
|
|
|
|
@cask.full_name
|
|
|
|
end
|
|
|
|
|
2021-06-18 12:03:22 -04:00
|
|
|
def runtime_dependencies(ignore_missing: false)
|
2021-07-15 23:49:41 +09:00
|
|
|
recursive_dependencies(ignore_missing: ignore_missing).select do |dependency|
|
|
|
|
dependency.tags.blank?
|
|
|
|
end
|
2020-07-29 09:14:39 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def deps
|
2021-03-26 14:11:03 +00:00
|
|
|
@deps ||= @cask.depends_on.formula.map do |f|
|
|
|
|
Dependency.new f
|
2020-07-29 09:14:39 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def requirements
|
|
|
|
@requirements ||= begin
|
|
|
|
requirements = []
|
|
|
|
dsl_reqs = @cask.depends_on
|
|
|
|
|
|
|
|
dsl_reqs.arch&.each do |arch|
|
|
|
|
requirements << ArchRequirement.new([:x86_64]) if arch[:bits] == 64
|
|
|
|
requirements << ArchRequirement.new([arch[:type]])
|
|
|
|
end
|
|
|
|
dsl_reqs.cask.each do |cask_ref|
|
|
|
|
requirements << Requirement.new([{ cask: cask_ref }])
|
|
|
|
end
|
|
|
|
requirements << dsl_reqs.macos if dsl_reqs.macos
|
|
|
|
|
|
|
|
requirements
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-06-18 12:03:22 -04:00
|
|
|
def recursive_dependencies(ignore_missing: false, &block)
|
|
|
|
Dependency.expand(self, ignore_missing: ignore_missing, &block)
|
2020-07-29 09:14:39 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def recursive_requirements(&block)
|
|
|
|
Requirement.expand(self, &block)
|
|
|
|
end
|
|
|
|
|
|
|
|
def any_version_installed?
|
|
|
|
@cask.installed?
|
|
|
|
end
|
|
|
|
end
|