diff env/lib/python3.7/site-packages/planemo/github_util.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/github_util.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-"""Utilities for interacting with Github."""
-from __future__ import absolute_import
-
-import os
-
-from galaxy.tool_util.deps.commands import which
-
-from planemo import git
-from planemo.io import (
-    communicate,
-    IS_OS_X,
-    untar_to,
-)
-
-try:
-    import github
-    has_github_lib = True
-except ImportError:
-    github = None
-    has_github_lib = False
-
-HUB_VERSION = "2.2.8"
-
-NO_GITHUB_DEP_ERROR = ("Cannot use github functionality - "
-                       "PyGithub library not available.")
-FAILED_TO_DOWNLOAD_HUB = "No hub executable available and it could not be installed."
-
-
-def get_github_config(ctx, allow_anonymous=False):
-    """Return a :class:`planemo.github_util.GithubConfig` for given configuration."""
-    global_github_config = _get_raw_github_config(ctx)
-    return GithubConfig(global_github_config, allow_anonymous=allow_anonymous)
-
-
-def clone_fork_branch(ctx, target, path, **kwds):
-    """Clone, fork, and branch a repository ahead of building a pull request."""
-    git.checkout(
-        ctx,
-        target,
-        path,
-        branch=kwds.get("branch", None),
-        remote="origin",
-        from_branch="master"
-    )
-    if kwds.get("fork"):
-        try:
-            fork(ctx, path, **kwds)
-        except Exception:
-            pass
-
-
-def fork(ctx, path, **kwds):
-    """Fork the target repository using ``hub``."""
-    hub_path = ensure_hub(ctx, **kwds)
-    hub_env = get_hub_env(ctx, path, **kwds)
-    cmd = [hub_path, "fork"]
-    communicate(cmd, env=hub_env)
-
-
-def pull_request(ctx, path, message=None, **kwds):
-    """Create a pull request against the origin of the path using ``hub``."""
-    hub_path = ensure_hub(ctx, **kwds)
-    hub_env = get_hub_env(ctx, path, **kwds)
-    cmd = [hub_path, "pull-request"]
-    if message is not None:
-        cmd.extend(["-m", message])
-    communicate(cmd, env=hub_env)
-
-
-def get_hub_env(ctx, path, **kwds):
-    """Return a environment dictionary to run hub with given user and repository target."""
-    env = git.git_env_for(path).copy()
-    github_config = _get_raw_github_config(ctx)
-    if github_config is not None:
-        if "username" in github_config:
-            env["GITHUB_USER"] = github_config["username"]
-        if "password" in github_config:
-            env["GITHUB_PASSWORD"] = github_config["password"]
-
-    return env
-
-
-def ensure_hub(ctx, **kwds):
-    """Ensure ``hub`` is on the system ``PATH``.
-
-    This method will ensure ``hub`` is installed if it isn't available.
-
-    For more information on ``hub`` checkout ...
-    """
-    hub_path = which("hub")
-    if not hub_path:
-        planemo_hub_path = os.path.join(ctx.workspace, "hub")
-        if not os.path.exists(planemo_hub_path):
-            _try_download_hub(planemo_hub_path)
-
-        if not os.path.exists(planemo_hub_path):
-            raise Exception(FAILED_TO_DOWNLOAD_HUB)
-
-        hub_path = planemo_hub_path
-    return hub_path
-
-
-def _try_download_hub(planemo_hub_path):
-    link = _hub_link()
-    # Strip URL base and .tgz at the end.
-    basename = link.split("/")[-1].rsplit(".", 1)[0]
-    untar_to(link, tar_args=['-zxvf', '-', "%s/bin/hub" % basename], path=planemo_hub_path)
-    communicate(["chmod", "+x", planemo_hub_path])
-
-
-def _get_raw_github_config(ctx):
-    """Return a :class:`planemo.github_util.GithubConfig` for given configuration."""
-    if "github" not in ctx.global_config:
-        if "GITHUB_USER" in os.environ and "GITHUB_PASSWORD" in os.environ:
-            return {
-                "username": os.environ["GITHUB_USER"],
-                "password": os.environ["GITHUB_PASSWORD"],
-            }
-    if "github" not in ctx.global_config:
-        raise Exception("github account not found in planemo config and GITHUB_USER / GITHUB_PASSWORD environment variables unset")
-    return ctx.global_config["github"]
-
-
-class GithubConfig(object):
-    """Abstraction around a Github account.
-
-    Required to use ``github`` module methods that require authorization.
-    """
-
-    def __init__(self, config, allow_anonymous=False):
-        if not has_github_lib:
-            raise Exception(NO_GITHUB_DEP_ERROR)
-        if "username" not in config or "password" not in config:
-            if not allow_anonymous:
-                raise Exception("github authentication unavailable")
-            github_object = github.Github()
-        else:
-            github_object = github.Github(config["username"], config["password"])
-        self._github = github_object
-
-
-def _hub_link():
-    if IS_OS_X:
-        template_link = "https://github.com/github/hub/releases/download/v%s/hub-darwin-amd64-%s.tgz"
-    else:
-        template_link = "https://github.com/github/hub/releases/download/v%s/hub-linux-amd64-%s.tgz"
-    return template_link % (HUB_VERSION, HUB_VERSION)
-
-
-def publish_as_gist_file(ctx, path, name="index"):
-    """Publish a gist.
-
-    More information on gists at http://gist.github.com/.
-    """
-    github_config = get_github_config(ctx, allow_anonymous=False)
-    user = github_config._github.get_user()
-    with open(path, "r") as fh:
-        content = fh.read()
-    content_file = github.InputFileContent(content)
-    gist = user.create_gist(False, {name: content_file})
-    return gist.files[name].raw_url
-
-
-def get_repository_object(ctx, name):
-    github_object = get_github_config(ctx, allow_anonymous=True)
-    return github_object._github.get_repo(name)
-
-
-__all__ = (
-    "clone_fork_branch",
-    "ensure_hub",
-    "fork",
-    "get_github_config",
-    "get_hub_env",
-    "publish_as_gist_file",
-)