Mercurial > repos > fubar > tool_factory_2
comparison toolfactory/rgToolFactory2.py @ 63:b3254219d4fb draft
Uploaded
| author | fubar |
|---|---|
| date | Tue, 10 Nov 2020 02:33:46 +0000 |
| parents | 881bd8c81ac9 |
| children | ed1ecd161295 |
comparison
equal
deleted
inserted
replaced
| 62:881bd8c81ac9 | 63:b3254219d4fb |
|---|---|
| 21 # one to run the executable with the supplied test data and settings | 21 # one to run the executable with the supplied test data and settings |
| 22 # Be simpler to write the tool, then run it with planemo and soak up the test outputs. | 22 # Be simpler to write the tool, then run it with planemo and soak up the test outputs. |
| 23 | 23 |
| 24 | 24 |
| 25 import argparse | 25 import argparse |
| 26 import copy | |
| 26 import logging | 27 import logging |
| 27 import os | 28 import os |
| 28 import re | 29 import re |
| 29 import shutil | 30 import shutil |
| 30 import subprocess | 31 import subprocess |
| 31 import sys | 32 import sys |
| 32 import tarfile | 33 import tarfile |
| 33 import tempfile | 34 import tempfile |
| 34 import time | 35 import time |
| 36 | |
| 37 from bioblend import galaxy | |
| 38 from bioblend import toolshed | |
| 35 | 39 |
| 36 import galaxyxml.tool as gxt | 40 import galaxyxml.tool as gxt |
| 37 import galaxyxml.tool.parameters as gxtp | 41 import galaxyxml.tool.parameters as gxtp |
| 38 | 42 |
| 39 import lxml | 43 import lxml |
| 152 self.lastclredirect = None | 156 self.lastclredirect = None |
| 153 self.lastxclredirect = None | 157 self.lastxclredirect = None |
| 154 self.cl = [] | 158 self.cl = [] |
| 155 self.xmlcl = [] | 159 self.xmlcl = [] |
| 156 self.is_positional = self.args.parampass == "positional" | 160 self.is_positional = self.args.parampass == "positional" |
| 157 if self.args.packages: | 161 if self.args.sysexe: |
| 158 self.executeme = self.args.packages.split(",")[0].split(":")[0] | |
| 159 else: | |
| 160 self.executeme = self.args.sysexe | 162 self.executeme = self.args.sysexe |
| 161 assert ( | 163 else: |
| 162 self.executeme is not None | 164 if self.args.packages: |
| 163 ), "No system or managed executable passed in. Cannot build" | 165 self.executeme = self.args.packages.split(",")[0].split(":")[0] |
| 166 else: | |
| 167 self.executeme = None | |
| 164 aCL = self.cl.append | 168 aCL = self.cl.append |
| 165 aXCL = self.xmlcl.append | 169 aXCL = self.xmlcl.append |
| 166 assert args.parampass in [ | 170 assert args.parampass in [ |
| 167 "0", | 171 "0", |
| 168 "argparse", | 172 "argparse", |
| 475 additional parameter %s in makeXML' | 479 additional parameter %s in makeXML' |
| 476 % (newtype, newname) | 480 % (newtype, newname) |
| 477 ) | 481 ) |
| 478 aparm.positional = self.is_positional | 482 aparm.positional = self.is_positional |
| 479 if self.is_positional: | 483 if self.is_positional: |
| 480 aninput.positional = int(oldcl) | 484 aparm.positional = int(oldcl) |
| 481 self.tinputs.append(aparm) | 485 self.tinputs.append(aparm) |
| 482 self.tparm = gxtp.TestParam(newname, value=newval) | 486 tparm = gxtp.TestParam(newname, value=newval) |
| 483 self.testparam.append(tparm) | 487 self.testparam.append(tparm) |
| 484 | 488 |
| 485 def doNoXMLparam(self): | 489 def doNoXMLparam(self): |
| 486 """filter style package - stdin to stdout""" | 490 """filter style package - stdin to stdout""" |
| 487 if len(self.infiles) > 0: | 491 if len(self.infiles) > 0: |
| 506 aninput.command_line_override = "< $%s" % newname | 510 aninput.command_line_override = "< $%s" % newname |
| 507 aninput.positional = self.is_positional | 511 aninput.positional = self.is_positional |
| 508 self.tinputs.append(aninput) | 512 self.tinputs.append(aninput) |
| 509 tp = gxtp.TestParam(name=newname, value="%s_sample" % newname) | 513 tp = gxtp.TestParam(name=newname, value="%s_sample" % newname) |
| 510 self.testparam.append(tp) | 514 self.testparam.append(tp) |
| 511 if len(self.outfiles > 0): | 515 if len(self.outfiles) > 0: |
| 512 newname = self.outfiles[0][OCLPOS] | 516 newname = self.outfiles[0][OCLPOS] |
| 513 newfmt = self.outfiles[0][OFMTPOS] | 517 newfmt = self.outfiles[0][OFMTPOS] |
| 514 anout = gxtp.OutputData(newname, format=newfmt, num_dashes=0) | 518 anout = gxtp.OutputData(newname, format=newfmt, num_dashes=0) |
| 515 anout.command_line_override = "> $%s" % newname | 519 anout.command_line_override = "> $%s" % newname |
| 516 anout.positional = self.is_positional | 520 anout.positional = self.is_positional |
| 529 else: | 533 else: |
| 530 self.newtool.command_override = self.xmlcl | 534 self.newtool.command_override = self.xmlcl |
| 531 if self.args.help_text: | 535 if self.args.help_text: |
| 532 helptext = open(self.args.help_text, "r").readlines() | 536 helptext = open(self.args.help_text, "r").readlines() |
| 533 safertext = [html_escape(x) for x in helptext] | 537 safertext = [html_escape(x) for x in helptext] |
| 534 if self.args.script_path: | 538 if False and self.args.script_path: |
| 535 scrpt = self.script.split('\n') | 539 scrp = self.script.split('\n') |
| 540 scrpt = [' %s' % x for x in scrp] # try to stop templating | |
| 536 scrpt.insert(0,"```\n") | 541 scrpt.insert(0,"```\n") |
| 537 if len(scrpt) > 300: | 542 if len(scrpt) > 300: |
| 538 safertext = safertext + scrpt[:100] + ['>500 lines - stuff deleted','......'] + scrpt[-100:] | 543 safertext = safertext + scrpt[:100] + ['>500 lines - stuff deleted','......'] + scrpt[-100:] |
| 539 else: | 544 else: |
| 540 safertext = safertext + scrpt | 545 safertext = safertext + scrpt |
| 591 ): # cannot do this inside galaxyxml as it expects lxml objects for tests | 596 ): # cannot do this inside galaxyxml as it expects lxml objects for tests |
| 592 part1 = exml.split("<tests>")[0] | 597 part1 = exml.split("<tests>")[0] |
| 593 part2 = exml.split("</tests>")[1] | 598 part2 = exml.split("</tests>")[1] |
| 594 fixed = "%s\n%s\n%s" % (part1, self.test_override, part2) | 599 fixed = "%s\n%s\n%s" % (part1, self.test_override, part2) |
| 595 exml = fixed | 600 exml = fixed |
| 601 exml = exml.replace('range="1:"', 'range="1000:"') | |
| 596 xf = open("%s.xml" % self.tool_name, "w") | 602 xf = open("%s.xml" % self.tool_name, "w") |
| 597 xf.write(exml) | 603 xf.write(exml) |
| 598 xf.write("\n") | 604 xf.write("\n") |
| 599 xf.close() | 605 xf.close() |
| 600 # ready for the tarball | 606 # ready for the tarball |
| 604 generate test outputs by running a command line | 610 generate test outputs by running a command line |
| 605 won't work if command or test override in play - planemo is the | 611 won't work if command or test override in play - planemo is the |
| 606 easiest way to generate test outputs for that case so is | 612 easiest way to generate test outputs for that case so is |
| 607 automagically selected | 613 automagically selected |
| 608 """ | 614 """ |
| 609 s = "run cl=%s" % str(self.cl) | |
| 610 logging.debug(s) | |
| 611 scl = " ".join(self.cl) | 615 scl = " ".join(self.cl) |
| 612 err = None | 616 err = None |
| 613 if self.args.parampass != "0": | 617 if self.args.parampass != "0": |
| 614 if os.path.exists(self.elog): | 618 if os.path.exists(self.elog): |
| 615 ste = open(self.elog, "a") | 619 ste = open(self.elog, "a") |
| 621 if os.path.exists(self.tlog): | 625 if os.path.exists(self.tlog): |
| 622 sto = open(self.tlog, "a") | 626 sto = open(self.tlog, "a") |
| 623 else: | 627 else: |
| 624 sto = open(self.tlog, "w") | 628 sto = open(self.tlog, "w") |
| 625 sto.write( | 629 sto.write( |
| 626 "## Executing Toolfactory generated command line = %s\n" % scl | 630 "## Executing Toolfactory generated command line = %s\n" % scl |
| 627 ) | 631 ) |
| 628 sto.flush() | 632 sto.flush() |
| 629 p = subprocess.run(self.cl, shell=False, stdout=sto, stderr=ste) | 633 p = subprocess.run(self.cl, shell=False, stdout=sto, stderr=ste) |
| 630 sto.close() | 634 sto.close() |
| 631 ste.close() | 635 ste.close() |
| 632 retval = p.returncode | 636 retval = p.returncode |
| 633 else: # work around special case - stdin and write to stdout | 637 else: # work around special case - stdin and write to stdout |
| 634 if len(self.infiles) > 0: | 638 if len(self.infiles) > 0: |
| 635 sti = open(self.infiles[0][IPATHPOS], "rb") | 639 sti = open(self.infiles[0][IPATHPOS], "rb") |
| 636 else: | 640 else: |
| 637 sti = sys.stdin | 641 sti = sys.stdin |
| 638 if len(self.outfiles) > 0: | 642 if len(self.outfiles) > 0: |
| 639 sto = open(self.outfiles[0][ONAMEPOS], "wb") | 643 sto = open(self.outfiles[0][ONAMEPOS], "wb") |
| 640 else: | 644 else: |
| 641 sto = sys.stdout | 645 sto = sys.stdout |
| 642 p = subprocess.run(self.cl, shell=False, stdout=sto, stdin=sti) | 646 p = subprocess.run(self.cl, shell=False, stdout=sto, stdin=sti) |
| 647 sto.write( | |
| 648 "## Executing Toolfactory generated command line = %s\n" % scl | |
| 649 ) | |
| 643 retval = p.returncode | 650 retval = p.returncode |
| 644 sto.close() | 651 sto.close() |
| 645 sti.close() | 652 sti.close() |
| 646 if os.path.isfile(self.tlog) and os.stat(self.tlog).st_size == 0: | 653 if os.path.isfile(self.tlog) and os.stat(self.tlog).st_size == 0: |
| 647 os.unlink(self.tlog) | 654 os.unlink(self.tlog) |
| 650 if retval != 0 and err: # problem | 657 if retval != 0 and err: # problem |
| 651 sys.stderr.write(err) | 658 sys.stderr.write(err) |
| 652 logging.debug("run done") | 659 logging.debug("run done") |
| 653 return retval | 660 return retval |
| 654 | 661 |
| 655 def planemo_shedload(self): | 662 |
| 656 """ | 663 def shedLoad(self): |
| 657 planemo shed_create --shed_target testtoolshed | 664 """ |
| 658 planemo shed_update --check_diff --shed_target testtoolshed | 665 {'deleted': False, |
| 666 'description': 'Tools for manipulating data', | |
| 667 'id': '175812cd7caaf439', | |
| 668 'model_class': 'Category', | |
| 669 'name': 'Text Manipulation', | |
| 670 'url': '/api/categories/175812cd7caaf439'}] | |
| 671 | |
| 672 | |
| 659 """ | 673 """ |
| 660 if os.path.exists(self.tlog): | 674 if os.path.exists(self.tlog): |
| 661 tout = open(self.tlog, "a") | 675 sto = open(self.tlog, "a") |
| 662 else: | 676 else: |
| 663 tout = open(self.tlog, "w") | 677 sto = open(self.tlog, "w") |
| 664 cll = ["planemo", "shed_create", "--shed_target", "local"] | 678 |
| 665 try: | 679 ts = toolshed.ToolShedInstance(url=self.args.toolshed_url,key=self.args.toolshed_api_key,verify=False) |
| 666 p = subprocess.run( | 680 repos = ts.repositories.get_repositories() |
| 667 cll, shell=True, cwd=self.tooloutdir, stdout=tout, stderr=tout | 681 rnames = [x.get('name','?') for x in repos] |
| 668 ) | 682 rids = [x.get('id','?') for x in repos] |
| 669 except: | 683 sto.write(f'############names={rnames} rids={rids}') |
| 670 pass | 684 cat = 'ToolFactory generated tools' |
| 671 if p.returncode != 0: | 685 if self.args.tool_name not in rnames: |
| 672 print("Repository %s exists" % self.args.tool_name) | 686 tscat = ts.categories.get_categories() |
| 673 else: | 687 cnames = [x.get('name','?') for x in tscat] |
| 674 print("initiated %s" % self.args.tool_name) | 688 cids = [x.get('id','?') for x in tscat] |
| 675 cll = [ | 689 catID = None |
| 676 "planemo", | 690 if cat in cnames: |
| 677 "shed_upload", | 691 ci = cnames.index(cat) |
| 678 "--shed_target", | 692 catID = cids[ci] |
| 679 "local", | 693 res = ts.repositories.create_repository(name=self.args.tool_name, synopsis='Synopsis:%s' % self.args.tool_desc, description=self.args.tool_desc, |
| 680 "--owner", | 694 type='unrestricted', remote_repository_url=self.args.toolshed_url, |
| 681 "fubar", | 695 homepage_url=None, category_ids=catID) |
| 682 "--name", | 696 tid = res.get('id',None) |
| 683 self.args.tool_name, | 697 sto.write(f'##########create res={res}') |
| 684 "--shed_key", | 698 else: |
| 685 self.args.toolshed_api_key, | 699 i = rnames.index(self.args.tool_name) |
| 686 "--tar", | 700 tid = rids[i] |
| 687 self.newtarpath, | 701 res = ts.repositories.update_repository(id=tid, tar_ball_path=self.newtarpath, commit_message=None) |
| 688 ] | 702 sto.write(f'#####update res={res}') |
| 689 p = subprocess.run(cll, shell=False) | 703 sto.close() |
| 690 print("Ran", " ".join(cll), "got", p.returncode) | 704 |
| 691 tout.close() | |
| 692 return p.returncode | |
| 693 | |
| 694 def planemo_test(self, genoutputs=True): | |
| 695 """planemo is a requirement so is available for testing | |
| 696 and for generating test outputs if command or test overrides are supplied | |
| 697 test outputs are sent to repdir for display | |
| 698 """ | |
| 699 xreal = "%s.xml" % self.tool_name | |
| 700 if os.path.exists(self.tlog): | |
| 701 tout = open(self.tlog, "a") | |
| 702 else: | |
| 703 tout = open(self.tlog, "w") | |
| 704 if genoutputs: | |
| 705 cll = [ | |
| 706 "planemo", | |
| 707 "test", | |
| 708 "--galaxy_root", | |
| 709 self.args.galaxy_root, | |
| 710 "--update_test_data", | |
| 711 xreal, | |
| 712 ] | |
| 713 else: | |
| 714 cll = ["planemo", "test", "--galaxy_root", | |
| 715 self.args.galaxy_root, | |
| 716 xreal,] | |
| 717 p = subprocess.run( | |
| 718 cll, shell=False, cwd=self.tooloutdir, stderr=tout, stdout=tout | |
| 719 ) | |
| 720 if genoutputs: | |
| 721 with os.scandir(self.testdir) as outs: | |
| 722 for entry in outs: | |
| 723 if entry.is_file(): | |
| 724 dest = os.path.join(self.repdir, entry.name) | |
| 725 src = os.path.join(self.testdir, entry.name) | |
| 726 shutil.copyfile(src, dest) | |
| 727 tout.write( | |
| 728 "Copied output %s to %s after planemo test\n" % (src, dest) | |
| 729 ) | |
| 730 tout.close() | |
| 731 return p.returncode | |
| 732 | 705 |
| 733 def eph_galaxy_load(self): | 706 def eph_galaxy_load(self): |
| 734 """load the new tool from the local toolshed after planemo uploads it | 707 """load the new tool from the local toolshed after planemo uploads it |
| 735 """ | 708 """ |
| 736 if os.path.exists(self.tlog): | 709 if os.path.exists(self.tlog): |
| 749 self.args.tool_name, | 722 self.args.tool_name, |
| 750 "--owner", | 723 "--owner", |
| 751 "fubar", | 724 "fubar", |
| 752 "--toolshed", | 725 "--toolshed", |
| 753 self.args.toolshed_url, | 726 self.args.toolshed_url, |
| 754 "--section_label", | 727 "--section_label", |
| 755 "Generated Tools", | 728 "ToolFactory", |
| 756 | 729 |
| 757 ] | 730 ] |
| 758 print("running\n", " ".join(cll)) | 731 tout.write("running\n%s\n" % " ".join(cll)) |
| 759 p = subprocess.run(cll, shell=False, stderr=tout, stdout=tout) | 732 p = subprocess.run(cll, shell=False, stderr=tout, stdout=tout) |
| 760 if p.returncode != 0: | 733 tout.write("installed %s - got retcode %d\n" % (self.args.tool_name,p.returncode)) |
| 761 print( | |
| 762 "Repository %s installation returned %d" | |
| 763 % (self.args.tool_name, p.returncode) | |
| 764 ) | |
| 765 else: | |
| 766 print("installed %s" % self.args.tool_name) | |
| 767 tout.close() | 734 tout.close() |
| 768 return p.returncode | 735 return p.returncode |
| 736 | |
| 737 | |
| 738 def planemo_shedload(self): | |
| 739 """ | |
| 740 planemo shed_create --shed_target testtoolshed | |
| 741 planemo shed_init --name=<name> | |
| 742 --owner=<shed_username> | |
| 743 --description=<short description> | |
| 744 [--remote_repository_url=<URL to .shed.yml on github>] | |
| 745 [--homepage_url=<Homepage for tool.>] | |
| 746 [--long_description=<long description>] | |
| 747 [--category=<category name>]* | |
| 748 | |
| 749 | |
| 750 planemo shed_update --check_diff --shed_target testtoolshed | |
| 751 """ | |
| 752 if os.path.exists(self.tlog): | |
| 753 tout = open(self.tlog, "a") | |
| 754 else: | |
| 755 tout = open(self.tlog, "w") | |
| 756 ts = toolshed.ToolShedInstance(url=self.args.toolshed_url,key=self.args.toolshed_api_key,verify=False) | |
| 757 repos = ts.repositories.get_repositories() | |
| 758 rnames = [x.get('name','?') for x in repos] | |
| 759 rids = [x.get('id','?') for x in repos] | |
| 760 tout.write(f'############names={rnames} rids={rids}') | |
| 761 cat = 'ToolFactory generated tools' | |
| 762 if self.args.tool_name not in rnames: | |
| 763 cll = ["planemo", "shed_create", "--shed_target", "local", | |
| 764 "--owner","fubar","--name", | |
| 765 self.args.tool_name,"--shed_key", | |
| 766 self.args.toolshed_api_key,] | |
| 767 try: | |
| 768 p = subprocess.run( | |
| 769 cll, shell=False, cwd=self.tooloutdir, stdout=tout, stderr=tout | |
| 770 ) | |
| 771 except: | |
| 772 pass | |
| 773 if p.returncode != 0: | |
| 774 tout.write("Repository %s exists" % self.args.tool_name) | |
| 775 else: | |
| 776 tout.write("initiated %s" % self.args.tool_name) | |
| 777 cll = [ | |
| 778 "planemo", | |
| 779 "shed_upload", | |
| 780 "--shed_target", | |
| 781 "local", | |
| 782 "--owner", | |
| 783 "fubar", | |
| 784 "--name", | |
| 785 self.args.tool_name, | |
| 786 "--shed_key", | |
| 787 self.args.toolshed_api_key, | |
| 788 "--tar", | |
| 789 self.newtarpath, | |
| 790 ] | |
| 791 p = subprocess.run(cll, shell=False, stdout=tout, stderr=tout) | |
| 792 tout.write("Ran %s got %d" % (" ".join(cll), p.returncode)) | |
| 793 tout.close() | |
| 794 return p.returncode | |
| 795 | |
| 796 | |
| 797 def eph_test(self): | |
| 798 """ | |
| 799 """ | |
| 800 if os.path.exists(self.tlog): | |
| 801 tout = open(self.tlog, "a") | |
| 802 else: | |
| 803 tout = open(self.tlog, "w") | |
| 804 cll = [ | |
| 805 "shed-tools", | |
| 806 "test", | |
| 807 "-g", | |
| 808 self.args.galaxy_url, | |
| 809 "-a", | |
| 810 self.args.galaxy_api_key, | |
| 811 "--name", | |
| 812 self.args.tool_name, | |
| 813 "--owner", | |
| 814 "fubar", | |
| 815 ] | |
| 816 p = subprocess.run( | |
| 817 cll, shell=False, cwd=self.tooloutdir, stderr=tout, stdout=tout | |
| 818 ) | |
| 819 tout.write("eph_test Ran %s got %d" % (" ".join(cll), p.returncode)) | |
| 820 tout.close() | |
| 821 return p.returncode | |
| 822 | |
| 823 def planemo_test(self, genoutputs=True): | |
| 824 """planemo is a requirement so is available for testing | |
| 825 and for generating test outputs if command or test overrides are supplied | |
| 826 test outputs are sent to repdir for display | |
| 827 """ | |
| 828 xreal = "%s.xml" % self.tool_name | |
| 829 if os.path.exists(self.tlog): | |
| 830 tout = open(self.tlog, "a") | |
| 831 else: | |
| 832 tout = open(self.tlog, "w") | |
| 833 if genoutputs: | |
| 834 dummy,tfile = tempfile.mkstemp() | |
| 835 cll = [ | |
| 836 "planemo", | |
| 837 "test", | |
| 838 "--galaxy_root", | |
| 839 self.args.galaxy_root, | |
| 840 "--update_test_data", | |
| 841 xreal, | |
| 842 ] | |
| 843 p = subprocess.run( | |
| 844 cll, shell=False, cwd=self.tooloutdir, stderr=dummy, stdout=dummy, | |
| 845 ) | |
| 846 dummy.close() # throw all the log away as it will be rerun after outputs are generated | |
| 847 else: | |
| 848 cll = ["planemo", "test", "--galaxy_root", | |
| 849 self.args.galaxy_root, | |
| 850 xreal,] | |
| 851 p = subprocess.run( | |
| 852 cll, shell=False, cwd=self.tooloutdir, stderr=tout, stdout=tout | |
| 853 ) | |
| 854 tout.close() | |
| 855 return p.returncode | |
| 856 | |
| 857 | |
| 769 | 858 |
| 770 def writeShedyml(self): | 859 def writeShedyml(self): |
| 771 """for planemo | 860 """for planemo |
| 772 """ | 861 """ |
| 773 yuser = self.args.user_email.split("@")[0] | 862 yuser = self.args.user_email.split("@")[0] |
| 870 a("--edit_additional_parameters", action="store_true", default=False) | 959 a("--edit_additional_parameters", action="store_true", default=False) |
| 871 a("--parampass", default="positional") | 960 a("--parampass", default="positional") |
| 872 a("--tfout", default="./tfout") | 961 a("--tfout", default="./tfout") |
| 873 a("--new_tool", default="new_tool") | 962 a("--new_tool", default="new_tool") |
| 874 a("--galaxy_url", default="http://localhost:8080") | 963 a("--galaxy_url", default="http://localhost:8080") |
| 964 a("--toolshed_url", default="http://localhost:9009") # make sure this is NOT 127.0.0.1 - it won't work if tool_sheds_conf.xml has localhost | |
| 965 #a("--galaxy_api_key", default="1e62ddad74fe9bf112859f4e9efea48b") | |
| 966 #a("--toolshed_api_key", default="9154c91f2a162bf12fda15764f43846c") | |
| 967 | |
| 968 a("--toolshed_api_key", default="fakekey") | |
| 875 a("--galaxy_api_key", default="fakekey") | 969 a("--galaxy_api_key", default="fakekey") |
| 876 a("--toolshed_url", default="http://localhost:9009") | |
| 877 a("--toolshed_api_key", default="fakekey") | |
| 878 a("--galaxy_root", default="/galaxy-central") | 970 a("--galaxy_root", default="/galaxy-central") |
| 971 | |
| 879 | 972 |
| 880 args = parser.parse_args() | 973 args = parser.parse_args() |
| 881 assert not args.bad_user, ( | 974 assert not args.bad_user, ( |
| 882 'UNAUTHORISED: %s is NOT authorized to use this tool until Galaxy admin adds %s to "admin_users" in the Galaxy configuration file' | 975 'UNAUTHORISED: %s is NOT authorized to use this tool until Galaxy admin adds %s to "admin_users" in the Galaxy configuration file' |
| 883 % (args.bad_user, args.bad_user) | 976 % (args.bad_user, args.bad_user) |
| 891 for i, x in enumerate(args.additional_parameters): | 984 for i, x in enumerate(args.additional_parameters): |
| 892 args.additional_parameters[i] = args.additional_parameters[i].replace('"', "") | 985 args.additional_parameters[i] = args.additional_parameters[i].replace('"', "") |
| 893 r = ScriptRunner(args) | 986 r = ScriptRunner(args) |
| 894 r.writeShedyml() | 987 r.writeShedyml() |
| 895 r.makeTool() | 988 r.makeTool() |
| 896 if args.command_override or args.test_override: | 989 retcode = r.planemo_test(genoutputs=True) # this fails :( - see PR |
| 897 retcode = r.planemo_test(genoutputs=True) # this fails :( - see PR | 990 r.moveRunOutputs() |
| 898 r.moveRunOutputs() | 991 r.makeToolTar() |
| 899 r.makeToolTar() | 992 retcode = r.planemo_test(genoutputs=False) |
| 900 retcode = r.planemo_test(genoutputs=False) | 993 r.moveRunOutputs() |
| 901 r.moveRunOutputs() | 994 if args.make_Tool == "gentestinstall": |
| 902 if args.make_Tool == "gentestinstall": | 995 retcode = r.planemo_shedload() #r.shedLoad() |
| 903 r.planemo_shedload() | 996 print(f'planemo_shedload returned {retcode}') |
| 904 r.eph_galaxy_load() | 997 r.eph_galaxy_load() |
| 905 else: | 998 |
| 906 retcode = r.run() | |
| 907 if retcode: | |
| 908 sys.stderr.write( | |
| 909 "## Run failed with return code %d. Cannot build yet. Please fix and retry" | |
| 910 % retcode | |
| 911 ) | |
| 912 sys.exit(1) | |
| 913 else: | |
| 914 r.moveRunOutputs() | |
| 915 r.makeToolTar() | |
| 916 if args.make_Tool in ["gentestinstall", "gentest"]: | |
| 917 r.planemo_test(genoutputs=False) | |
| 918 r.moveRunOutputs() | |
| 919 if args.make_Tool == "gentestinstall": | |
| 920 r.planemo_shedload() | |
| 921 r.eph_galaxy_load() | |
| 922 | 999 |
| 923 | 1000 |
| 924 if __name__ == "__main__": | 1001 if __name__ == "__main__": |
| 925 main() | 1002 main() |
