Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/planemo/conda_recipes.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 conda recipe generation. | |
| 2 """ | |
| 3 | |
| 4 from __future__ import absolute_import | |
| 5 | |
| 6 import os | |
| 7 | |
| 8 from planemo import git | |
| 9 from planemo.bioconda_scripts import bioconductor_skeleton | |
| 10 from planemo.io import info | |
| 11 | |
| 12 # Bioconda helper functions | |
| 13 | |
| 14 | |
| 15 def clone_bioconda_repo(path): | |
| 16 """Clone bioconda repository in given path.""" | |
| 17 bioconda_repo = "git@github.com:bioconda/bioconda-recipes.git" | |
| 18 git.clone(None, bioconda_repo, path) | |
| 19 return "git clone of bioconda repo worked" | |
| 20 | |
| 21 | |
| 22 def write_bioconda_recipe(package_name, clone, update, bioconda_dir_path=None): | |
| 23 """Make a bioconda recipe given the package name. | |
| 24 | |
| 25 clone: y/N , clone the whole bioconda repository and create recipe inside | |
| 26 repository. | |
| 27 | |
| 28 update: The update feature differs from the one in bioconda, as it | |
| 29 updates the specific package, as opposed to the every package in the | |
| 30 biocoda repository. | |
| 31 """ | |
| 32 # set bioconda path | |
| 33 if bioconda_dir_path is None: | |
| 34 bioconda_recipe_path = os.path.join(os.path.expanduser("~"), "bioconda-recipes") | |
| 35 else: | |
| 36 bioconda_recipe_path = os.path.join(bioconda_dir_path, "bioconda-recipes") | |
| 37 | |
| 38 # Clone | |
| 39 if clone and (not os.path.exists(bioconda_recipe_path)): | |
| 40 clone_bioconda_repo(bioconda_recipe_path) | |
| 41 info("bioconda-recipes cloned and writing to %s" % bioconda_dir_path) | |
| 42 else: | |
| 43 info("Bioconda repository not cloned or already exists") | |
| 44 | |
| 45 # Check if package_name is in recipes | |
| 46 presence = any(package_name in r for r, d, f in os.walk(bioconda_recipe_path)) | |
| 47 if presence: | |
| 48 info("Package already exists in bioconda") | |
| 49 if update: | |
| 50 info("Package will be updated") | |
| 51 recipe_dir = os.path.join(bioconda_recipe_path, "recipes") | |
| 52 bioconductor_skeleton.write_recipe(package_name, recipe_dir, True) | |
| 53 elif not presence: | |
| 54 info("Package found in bioconda recipes") | |
| 55 recipe_dir = os.path.join(bioconda_recipe_path, "recipes") | |
| 56 bioconductor_skeleton.write_recipe(package_name, recipe_dir, True) | |
| 57 return | |
| 58 | |
| 59 | |
| 60 __all__ = ( | |
| 61 "clone_bioconda_repo", | |
| 62 "write_bioconda_recipe", | |
| 63 ) |
