Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/planemo/git.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/planemo/git.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -"""Utilities for interacting with git using planemo abstractions.""" -from __future__ import absolute_import - -import os -import subprocess - -from galaxy.util import unicodify - -from planemo import io - - -def git_env_for(path): - """Setup env dictionary to target specified git repo with git commands.""" - env = { - "GIT_WORK_DIR": path, - "GIT_DIR": os.path.join(path, ".git") - } - return env - - -def add(ctx, repo_path, file_path): - env = git_env_for(repo_path) - io.communicate("cd '%s' && git add '%s'" % (repo_path, os.path.abspath(file_path)), env=env) - - -def commit(ctx, repo_path, message=""): - env = git_env_for(repo_path) - io.communicate(["git", "commit", "-m", message], env=env) - - -def push(ctx, repo_path, to, branch, force=False): - env = git_env_for(repo_path) - cmd = ["git", "push"] - if force: - cmd += ["--force"] - cmd += [to, branch] - io.communicate(cmd, env=env) - - -def branch(ctx, repo_path, branch, from_branch=None): - env = git_env_for(repo_path) - cmd = ["git", "checkout", "-b", branch] - if from_branch is not None: - cmd.append(from_branch) - io.communicate(cmd, env=env) - - -def checkout(ctx, remote_repo, local_path, branch=None, remote="origin", from_branch="master"): - """Checkout a new branch from a remote repository.""" - env = git_env_for(local_path) - if not os.path.exists(local_path): - io.communicate(command_clone(ctx, remote_repo, local_path)) - else: - io.communicate(["git", "fetch", remote], env=env) - - if branch: - io.communicate(["git", "checkout", "%s/%s" % (remote, from_branch), "-b", branch], env=env) - else: - io.communicate(["git", "merge", "--ff-only", "%s/%s" % (remote, from_branch)], env=env) - - -def command_clone(ctx, src, dest, mirror=False, branch=None): - """Produce a command-line string to clone a repository. - - Take in ``ctx`` to allow more configurability down the road. - """ - cmd = ['git', 'clone'] - if mirror: - cmd.append("--mirror") - if branch is not None: - cmd.extend(["--branch", branch]) - cmd.extend([src, dest]) - return cmd - - -def diff(ctx, directory, range): - """Produce a list of diff-ed files for commit range.""" - cmd_template = "cd '%s' && git diff --name-only '%s' --" - cmd = cmd_template % (directory, range) - stdout, _ = io.communicate( - cmd, - stdout=subprocess.PIPE, stderr=subprocess.PIPE, - universal_newlines=True - ) - return [l.strip() for l in unicodify(stdout).splitlines() if l] - - -def clone(*args, **kwds): - """Clone a git repository. - - See :func:`command_clone` for description of arguments. - """ - command = command_clone(*args, **kwds) - return io.communicate(command) - - -def rev(ctx, directory): - """Raw revision for git directory specified. - - Throws ``RuntimeError`` if not a git directory. - """ - cmd_template = "cd '%s' && git rev-parse HEAD" - cmd = cmd_template % directory - stdout, _ = io.communicate( - cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE - ) - return unicodify(stdout).strip() - - -def is_rev_dirty(ctx, directory): - """Check if specified git repository has uncommitted changes.""" - return io.shell(['git', 'diff', '--quiet'], cwd=directory) != 0 - - -def rev_if_git(ctx, directory): - """Determine git revision (or ``None``).""" - try: - the_rev = rev(ctx, directory) - is_dirty = is_rev_dirty(ctx, directory) - if is_dirty: - the_rev += "-dirty" - return the_rev - except RuntimeError: - return None