utils/pypi: specify dependencies needed to update resources
Also allow optionally installing these dependencies. By default, only `python@3.y` formulae will be automatically installed. Signed-off-by: Michael Cho <michael@michaelcho.dev>
This commit is contained in:
parent
977ac20b2b
commit
7303d642dd
@ -198,6 +198,8 @@ module PyPI
|
|||||||
package_name: T.nilable(String),
|
package_name: T.nilable(String),
|
||||||
extra_packages: T.nilable(T::Array[String]),
|
extra_packages: T.nilable(T::Array[String]),
|
||||||
exclude_packages: T.nilable(T::Array[String]),
|
exclude_packages: T.nilable(T::Array[String]),
|
||||||
|
dependencies: T.nilable(T::Array[String]),
|
||||||
|
install_dependencies: T.nilable(T::Boolean),
|
||||||
print_only: T.nilable(T::Boolean),
|
print_only: T.nilable(T::Boolean),
|
||||||
silent: T.nilable(T::Boolean),
|
silent: T.nilable(T::Boolean),
|
||||||
verbose: T.nilable(T::Boolean),
|
verbose: T.nilable(T::Boolean),
|
||||||
@ -205,7 +207,8 @@ module PyPI
|
|||||||
).returns(T.nilable(T::Boolean))
|
).returns(T.nilable(T::Boolean))
|
||||||
}
|
}
|
||||||
def self.update_python_resources!(formula, version: nil, package_name: nil, extra_packages: nil,
|
def self.update_python_resources!(formula, version: nil, package_name: nil, extra_packages: nil,
|
||||||
exclude_packages: nil, print_only: false, silent: false, verbose: false,
|
exclude_packages: nil, dependencies: nil, install_dependencies: false,
|
||||||
|
print_only: false, silent: false, verbose: false,
|
||||||
ignore_non_pypi_packages: false)
|
ignore_non_pypi_packages: false)
|
||||||
|
|
||||||
auto_update_list = formula.tap&.pypi_formula_mappings
|
auto_update_list = formula.tap&.pypi_formula_mappings
|
||||||
@ -224,9 +227,22 @@ module PyPI
|
|||||||
package_name = list_entry["package_name"]
|
package_name = list_entry["package_name"]
|
||||||
extra_packages = list_entry["extra_packages"]
|
extra_packages = list_entry["extra_packages"]
|
||||||
exclude_packages = list_entry["exclude_packages"]
|
exclude_packages = list_entry["exclude_packages"]
|
||||||
|
dependencies = list_entry["dependencies"]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
missing_dependencies = Array(dependencies).reject do |dependency|
|
||||||
|
Formula[dependency].any_version_installed?
|
||||||
|
rescue FormulaUnavailableError
|
||||||
|
odie "Formula \"#{dependency}\" not found but it is a dependency to update \"#{formula.name}\" resources."
|
||||||
|
end
|
||||||
|
if missing_dependencies.present?
|
||||||
|
missing_msg = "formulae required to update \"#{formula.name}\" resources: #{missing_dependencies.join(", ")}"
|
||||||
|
odie "Missing #{missing_msg}" unless install_dependencies
|
||||||
|
ohai "Installing #{missing_msg}"
|
||||||
|
missing_dependencies.each(&method(:ensure_formula_installed!))
|
||||||
|
end
|
||||||
|
|
||||||
python_deps = formula.deps
|
python_deps = formula.deps
|
||||||
.select { |d| d.name.match?(/^python(@.+)?$/) }
|
.select { |d| d.name.match?(/^python(@.+)?$/) }
|
||||||
.map(&:to_formula)
|
.map(&:to_formula)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user