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', )