comparison env/lib/python3.7/site-packages/planemo/mulled.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:26e78fe6e8c4
1 """Planemo specific utilities for dealing with mulled containers.
2
3 The extend galaxy-tool-util's features with planemo specific idioms.
4 """
5 from __future__ import absolute_import
6
7 import os
8
9 from galaxy.tool_util.deps.mulled.mulled_build import (
10 DEFAULT_CHANNELS,
11 ensure_installed,
12 InvolucroContext,
13 )
14 from galaxy.tool_util.deps.mulled.util import build_target
15
16 from planemo.conda import collect_conda_target_lists
17 from planemo.io import shell
18
19
20 def conda_to_mulled_targets(conda_targets):
21 return list(map(lambda c: build_target(c.package, c.version), conda_targets))
22
23
24 def collect_mulled_target_lists(ctx, paths, recursive=False):
25 return list(map(conda_to_mulled_targets, collect_conda_target_lists(ctx, paths, recursive=recursive)))
26
27
28 def build_involucro_context(ctx, **kwds):
29 """Build a galaxy-tool-util InvolucroContext tailored to planemo use.
30
31 Using planemo's common command-line/global config options.
32 """
33 involucro_path_default = os.path.join(ctx.workspace, "involucro")
34 involucro_path = kwds.get("involucro_path", involucro_path_default)
35 use_planemo_shell = kwds.get("use_planemo_shell_exec", True)
36 shell_exec = shell if use_planemo_shell else None
37 involucro_context = InvolucroContext(involucro_bin=involucro_path,
38 shell_exec=shell_exec)
39 if not ensure_installed(involucro_context, True):
40 raise Exception("Failed to install involucro for Planemo.")
41 return involucro_context
42
43
44 def build_mull_target_kwds(ctx, **kwds):
45 """Adapt Planemo's CLI and workspace configuration to galaxy-tool-util's mulled_build options."""
46 involucro_context = build_involucro_context(ctx, **kwds)
47 channels = kwds.get("conda_ensure_channels", ",".join(DEFAULT_CHANNELS))
48 namespace = kwds.get("mulled_namespace", "biocontainers")
49 target_kwds = {
50 'involucro_context': involucro_context,
51 'channels': channels.split(","),
52 'namespace': namespace,
53 'verbose': ctx.verbose,
54 }
55
56 conda_version = kwds.get("mulled_conda_version", None)
57 if conda_version is not None:
58 target_kwds["conda_version"] = conda_version
59 return target_kwds
60
61
62 __all__ = (
63 "build_involucro_context",
64 "build_mull_target_kwds",
65 "collect_mulled_target_lists",
66 "conda_to_mulled_targets",
67 )