diff env/lib/python3.9/site-packages/planemo/commands/cmd_conda_env.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/planemo/commands/cmd_conda_env.py	Mon Mar 22 18:12:50 2021 +0000
@@ -0,0 +1,73 @@
+"""Module describing the planemo ``conda_env`` command."""
+from __future__ import print_function
+
+import click
+from galaxy.tool_util.deps import conda_util
+
+from planemo import options
+from planemo.cli import command_function
+from planemo.conda import build_conda_context, collect_conda_targets
+from planemo.io import error
+from planemo.io import ps1_for_path
+
+
+SOURCE_COMMAND = """
+PRE_CONDA_PS1=$PS1
+source %s %s
+if [[ -n $BASH_VERSION ]]; then
+    hash -r
+elif [[ -n $ZSH_VERSION ]]; then
+    rehash
+else
+echo 'Only bash and zsh are supported'
+    return 1
+fi
+PS1="%s"
+echo 'Deactivate environment with conda_env_deactivate'
+alias conda_env_deactivate="source %s; %s"
+"""
+
+
+@click.command('conda_env')
+@options.optional_tools_arg()
+@options.conda_target_options()
+# @options.skip_install_option()  # TODO
+@command_function
+def cli(ctx, path, **kwds):
+    """Activate a conda environment for tool.
+
+    Source the output of this command to activate a conda environment for this
+    tool.
+
+    \b
+        $ . <(planemo conda_env seqtk_seq.xml)
+        Deactivate environment with conda_env_deactivate
+        (seqtk_seq_v6) $ which seqtk
+        /home/planemo/miniconda2/envs/jobdepsDkzcjjfecc6d406196737781ff4456ec60975c137e04884e4f4b05dc68192f7cec4656/bin/seqtk
+        (seqtk_seq_v6) $ conda_env_deactivate
+        $
+
+    """
+    conda_context = build_conda_context(ctx, use_planemo_shell_exec=False, **kwds)
+    conda_targets = collect_conda_targets(ctx, [path])
+    installed_conda_targets = conda_util.filter_installed_targets(
+        conda_targets, conda_context=conda_context
+    )
+    env_name, exit_code = conda_util.build_isolated_environment(
+        installed_conda_targets, conda_context=conda_context, quiet=True
+    )
+    if exit_code:
+        error("Failed to build environment for request.")
+        return 1
+
+    ps1 = ps1_for_path(path, base="PRE_CONDA_PS1")
+    remove_env = "%s env remove -y --name '%s'" % (
+        conda_context.conda_exec, env_name
+    )
+    deactivate = conda_context.deactivate
+    activate = conda_context.activate
+    command = SOURCE_COMMAND % (
+        activate, env_name, ps1,
+        deactivate, remove_env
+    )
+    print(command)