Mercurial > repos > shellac > sam_consensus_v3
diff env/lib/python3.9/site-packages/galaxy/tool_util/deps/resolvers/homebrew.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/env/lib/python3.9/site-packages/galaxy/tool_util/deps/resolvers/homebrew.py Mon Mar 22 18:12:50 2021 +0000 @@ -0,0 +1,60 @@ +""" +This file implements a brew resolver for Galaxy requirements. In order for Galaxy +to pick up on recursively defined and versioned brew dependencies recipes should +be installed using the experimental `brew-vinstall` external command. + +More information here: + +https://github.com/jmchilton/brew-tests +https://github.com/Homebrew/homebrew-science/issues/1191 + +This is still an experimental module and there will almost certainly be backward +incompatible changes coming. +""" + +from . import ( + DependencyResolver, + NullDependency +) +from .resolver_mixins import UsesHomebrewMixin + +# TODO: Implement prefer version linked... +PREFER_VERSION_LINKED = 'linked' +PREFER_VERSION_LATEST = 'latest' +UNKNOWN_PREFER_VERSION_MESSAGE_TEMPLATE = "HomebrewDependencyResolver prefer_version must be %s" +UNKNOWN_PREFER_VERSION_MESSAGE = UNKNOWN_PREFER_VERSION_MESSAGE_TEMPLATE % (PREFER_VERSION_LATEST) +DEFAULT_PREFER_VERSION = PREFER_VERSION_LATEST + + +class HomebrewDependencyResolver(DependencyResolver, UsesHomebrewMixin): + resolver_type = "homebrew" + + def __init__(self, dependency_manager, **kwds): + self.versionless = _string_as_bool(kwds.get('versionless', 'false')) + self.prefer_version = kwds.get('prefer_version', None) + + if self.prefer_version is None: + self.prefer_version = DEFAULT_PREFER_VERSION + + if self.versionless and self.prefer_version not in [PREFER_VERSION_LATEST]: + raise Exception(UNKNOWN_PREFER_VERSION_MESSAGE) + + self._init_homebrew(**kwds) + + def resolve(self, requirement, **kwds): + name, version, type = requirement.name, requirement.version, requirement.type + + if type != "package": + return NullDependency(version=version, name=name) + + if version is None or self.versionless: + return self._find_dep_default(name, version) + else: + return self._find_dep_versioned(name, version) + + +def _string_as_bool(value): + return str(value).lower() == "true" + + +__all__ = ('HomebrewDependencyResolver', )