Mercurial > repos > bcclaywell > argo_navis
comparison venv/lib/python2.7/site-packages/planemo/io.py @ 0:d67268158946 draft
planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
| author | bcclaywell |
|---|---|
| date | Mon, 12 Oct 2015 17:43:33 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:d67268158946 |
|---|---|
| 1 from __future__ import print_function | |
| 2 import contextlib | |
| 3 import os | |
| 4 import shutil | |
| 5 import sys | |
| 6 import tempfile | |
| 7 import time | |
| 8 | |
| 9 import click | |
| 10 from galaxy.tools.deps import commands | |
| 11 from galaxy.tools.deps.commands import which | |
| 12 | |
| 13 | |
| 14 def communicate(cmds, **kwds): | |
| 15 info(cmds) | |
| 16 p = commands.shell_process(cmds, **kwds) | |
| 17 ret_val = p.communicate() | |
| 18 if p.returncode != 0: | |
| 19 template = "Problem executing commands {0} - ({1}, {2})" | |
| 20 msg = template.format(cmds, ret_val[0], ret_val[1]) | |
| 21 raise RuntimeError(msg) | |
| 22 return ret_val | |
| 23 | |
| 24 | |
| 25 def shell(cmds, **kwds): | |
| 26 info(cmds) | |
| 27 return commands.shell(cmds, **kwds) | |
| 28 | |
| 29 | |
| 30 def info(message, *args): | |
| 31 if args: | |
| 32 message = message % args | |
| 33 _echo(click.style(message, bold=True, fg='green')) | |
| 34 | |
| 35 | |
| 36 def can_write_to_path(path, **kwds): | |
| 37 if not kwds["force"] and os.path.exists(path): | |
| 38 error("%s already exists, exiting." % path) | |
| 39 return False | |
| 40 return True | |
| 41 | |
| 42 | |
| 43 def error(message, *args): | |
| 44 if args: | |
| 45 message = message % args | |
| 46 _echo(click.style(message, bold=True, fg='red'), err=True) | |
| 47 | |
| 48 | |
| 49 def warn(message, *args): | |
| 50 if args: | |
| 51 message = message % args | |
| 52 _echo(click.style(message, fg='red'), err=True) | |
| 53 | |
| 54 | |
| 55 def _echo(message, err=False): | |
| 56 if sys.version_info[0] == 2: | |
| 57 click.echo(message, err=err) | |
| 58 else: | |
| 59 print(message) | |
| 60 | |
| 61 | |
| 62 def write_file(path, content): | |
| 63 with open(path, "w") as f: | |
| 64 f.write(content) | |
| 65 | |
| 66 | |
| 67 def untar_to(url, path, tar_args): | |
| 68 if which("wget"): | |
| 69 download_cmd = "wget -q --recursive -O - '%s'" | |
| 70 else: | |
| 71 download_cmd = "curl '%s'" | |
| 72 download_cmd = download_cmd % url | |
| 73 if tar_args: | |
| 74 if not os.path.exists(path): | |
| 75 os.makedirs(path) | |
| 76 | |
| 77 untar_cmd = "tar %s" % tar_args | |
| 78 shell("%s | %s" % (download_cmd, untar_cmd)) | |
| 79 else: | |
| 80 shell("%s > '%s'" % (download_cmd, path)) | |
| 81 | |
| 82 | |
| 83 @contextlib.contextmanager | |
| 84 def temp_directory(prefix="planemo_tmp_"): | |
| 85 temp_dir = tempfile.mkdtemp(prefix=prefix) | |
| 86 try: | |
| 87 yield temp_dir | |
| 88 finally: | |
| 89 shutil.rmtree(temp_dir) | |
| 90 | |
| 91 | |
| 92 def kill_pid_file(pid_file): | |
| 93 if not os.path.exists(pid_file): | |
| 94 return | |
| 95 | |
| 96 pid = int(open(pid_file, "r").read()) | |
| 97 kill_posix(pid) | |
| 98 | |
| 99 | |
| 100 def kill_posix(pid): | |
| 101 def _check_pid(): | |
| 102 try: | |
| 103 os.kill(pid, 0) | |
| 104 return True | |
| 105 except OSError: | |
| 106 return False | |
| 107 | |
| 108 if _check_pid(): | |
| 109 for sig in [15, 9]: | |
| 110 try: | |
| 111 os.kill(pid, sig) | |
| 112 except OSError: | |
| 113 return | |
| 114 time.sleep(1) | |
| 115 if not _check_pid(): | |
| 116 return |
