comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 """
2 This file implements a brew resolver for Galaxy requirements. In order for Galaxy
3 to pick up on recursively defined and versioned brew dependencies recipes should
4 be installed using the experimental `brew-vinstall` external command.
5
6 More information here:
7
8 https://github.com/jmchilton/brew-tests
9 https://github.com/Homebrew/homebrew-science/issues/1191
10
11 This is still an experimental module and there will almost certainly be backward
12 incompatible changes coming.
13 """
14
15 from . import (
16 DependencyResolver,
17 NullDependency
18 )
19 from .resolver_mixins import UsesHomebrewMixin
20
21 # TODO: Implement prefer version linked...
22 PREFER_VERSION_LINKED = 'linked'
23 PREFER_VERSION_LATEST = 'latest'
24 UNKNOWN_PREFER_VERSION_MESSAGE_TEMPLATE = "HomebrewDependencyResolver prefer_version must be %s"
25 UNKNOWN_PREFER_VERSION_MESSAGE = UNKNOWN_PREFER_VERSION_MESSAGE_TEMPLATE % (PREFER_VERSION_LATEST)
26 DEFAULT_PREFER_VERSION = PREFER_VERSION_LATEST
27
28
29 class HomebrewDependencyResolver(DependencyResolver, UsesHomebrewMixin):
30 resolver_type = "homebrew"
31
32 def __init__(self, dependency_manager, **kwds):
33 self.versionless = _string_as_bool(kwds.get('versionless', 'false'))
34 self.prefer_version = kwds.get('prefer_version', None)
35
36 if self.prefer_version is None:
37 self.prefer_version = DEFAULT_PREFER_VERSION
38
39 if self.versionless and self.prefer_version not in [PREFER_VERSION_LATEST]:
40 raise Exception(UNKNOWN_PREFER_VERSION_MESSAGE)
41
42 self._init_homebrew(**kwds)
43
44 def resolve(self, requirement, **kwds):
45 name, version, type = requirement.name, requirement.version, requirement.type
46
47 if type != "package":
48 return NullDependency(version=version, name=name)
49
50 if version is None or self.versionless:
51 return self._find_dep_default(name, version)
52 else:
53 return self._find_dep_versioned(name, version)
54
55
56 def _string_as_bool(value):
57 return str(value).lower() == "true"
58
59
60 __all__ = ('HomebrewDependencyResolver', )