diff --git a/planemo/galaxy/config.py b/planemo/galaxy/config.py index 3b42e47b1..4ec468175 100644 --- a/planemo/galaxy/config.py +++ b/planemo/galaxy/config.py @@ -1230,9 +1230,12 @@ def _install_galaxy(ctx, galaxy_root, env, kwds): def _install_galaxy_via_download(ctx, galaxy_root, env, kwds): branch = _galaxy_branch(kwds) + source = _galaxy_source(kwds) + if source.startswith("https://github.com/"): + source = source[len("https://github.com/") :] untar_to( - "https://codeload.github.com/galaxyproject/galaxy/tar.gz/" + branch, - tar_args=["-xvzf", "-", "galaxy-" + branch], + f"https://codeload.github.com/{source}/tar.gz/{branch}", + tar_args=["--strip-components", "1", "-xvzf", "-", "galaxy-" + branch.replace("/", "-")], dest_dir=galaxy_root, ) _install_with_command(ctx, galaxy_root, env, kwds) @@ -1241,7 +1244,7 @@ def _install_galaxy_via_download(ctx, galaxy_root, env, kwds): def _install_galaxy_via_git(ctx, galaxy_root, env, kwds): gx_repo = _ensure_galaxy_repository_available(ctx, kwds) branch = _galaxy_branch(kwds) - command = git.command_clone(ctx, gx_repo, galaxy_root, branch=branch) + command = git.command_clone(ctx, gx_repo, galaxy_root, branch=branch, depth=1) exit_code = shell(command, env=env) if exit_code != 0: raise Exception("Failed to clone Galaxy via git") diff --git a/planemo/git.py b/planemo/git.py index b84cba206..aee1d8952 100644 --- a/planemo/git.py +++ b/planemo/git.py @@ -2,6 +2,7 @@ import os import subprocess +import urllib.parse from typing import ( Dict, List, @@ -87,7 +88,12 @@ def checkout(ctx, remote_repo, local_path, branch=None, remote="origin", from_br def command_clone( - ctx: "PlanemoCliContext", src: str, dest: str, mirror: bool = False, branch: Optional[str] = None + ctx: "PlanemoCliContext", + src: str, + dest: str, + mirror: bool = False, + branch: Optional[str] = None, + depth: Optional[int] = None, ) -> List[str]: """Produce a command-line string to clone a repository. @@ -98,6 +104,10 @@ def command_clone( cmd.append("--mirror") if branch is not None: cmd.extend(["--branch", branch]) + if depth is not None: + cmd.extend(["--depth", str(depth)]) + if urllib.parse.urlparse(src).scheme == "": + src = f"file://{src}" cmd.extend([src, dest]) return cmd