|
16 | 16 |
|
17 | 17 | import rdflib
|
18 | 18 | from typing import Union, Any, cast, Callable, Dict, Tuple, IO
|
| 19 | +try: |
| 20 | + from galaxy.tools import deps |
| 21 | +except ImportError: |
| 22 | + deps = None |
19 | 23 |
|
20 | 24 | from schema_salad.ref_resolver import Loader
|
21 | 25 | import schema_salad.validate as validate
|
|
37 | 41 | _logger.addHandler(defaultStreamHandler)
|
38 | 42 | _logger.setLevel(logging.INFO)
|
39 | 43 |
|
| 44 | +if deps is not None: |
| 45 | + deps.log = _logger |
| 46 | + |
40 | 47 |
|
41 | 48 | def arg_parser(): # type: () -> argparse.ArgumentParser
|
42 | 49 | parser = argparse.ArgumentParser(description='Reference executor for Common Workflow Language')
|
@@ -138,6 +145,11 @@ def arg_parser(): # type: () -> argparse.ArgumentParser
|
138 | 145 | exgroup.add_argument("--quiet", action="store_true", help="Only print warnings and errors.")
|
139 | 146 | exgroup.add_argument("--debug", action="store_true", help="Print even more logging")
|
140 | 147 |
|
| 148 | + # help="Dependency resolver configuration file describing how to adapt 'Dependency' hints to current system." |
| 149 | + parser.add_argument("--beta-dependency-resolvers-configuration", default=None, help=argparse.SUPPRESS) |
| 150 | + # help="Defaut root directory used by dependency resolvers configuration." |
| 151 | + parser.add_argument("--beta-dependencies-directory", default=None, help=argparse.SUPPRESS) |
| 152 | + |
141 | 153 | parser.add_argument("--tool-help", action="store_true", help="Print command line help for tool")
|
142 | 154 |
|
143 | 155 | parser.add_argument("--relative-deps", choices=['primary', 'cwd'], default="primary",
|
@@ -601,6 +613,12 @@ def main(argsl=None,
|
601 | 613 | if not hasattr(args, k):
|
602 | 614 | setattr(args, k, v)
|
603 | 615 |
|
| 616 | + if deps is not None: |
| 617 | + tool_dependencies_configuartion = DependenciesConfigruation(args) |
| 618 | + tool_dependency_manager = deps.build_dependency_manager(tool_dependencies_configuartion) |
| 619 | + else: |
| 620 | + tool_dependency_manager = None |
| 621 | + |
604 | 622 | if args.quiet:
|
605 | 623 | _logger.setLevel(logging.WARN)
|
606 | 624 | if args.debug:
|
@@ -645,8 +663,11 @@ def main(argsl=None,
|
645 | 663 | printdot(uri, processobj, document_loader.ctx, stdout)
|
646 | 664 | return 0
|
647 | 665 |
|
| 666 | + make_tool_kwargs = { |
| 667 | + 'tool_dependency_manager': tool_dependency_manager, |
| 668 | + } |
648 | 669 | tool = make_tool(document_loader, avsc_names, metadata, uri,
|
649 |
| - makeTool, {}) |
| 670 | + makeTool, make_tool_kwargs) |
650 | 671 | except (validate.ValidationException) as exc:
|
651 | 672 | _logger.error(u"Tool definition failed validation:\n%s", exc,
|
652 | 673 | exc_info=(exc if args.debug else False))
|
@@ -749,5 +770,20 @@ def locToPath(p):
|
749 | 770 | _logger.removeHandler(stderr_handler)
|
750 | 771 | _logger.addHandler(defaultStreamHandler)
|
751 | 772 |
|
| 773 | + |
| 774 | +class DependenciesConfigruation(object): |
| 775 | + |
| 776 | + def __init__(self, args): |
| 777 | + conf_file = getattr(args, "beta_dependency_resolvers_configuration", None) |
| 778 | + tool_dependency_dir = getattr(args, "beta_dependencies_directory", None) |
| 779 | + if conf_file is not None and os.path.exists(conf_file): |
| 780 | + self.use_tool_dependencies = True |
| 781 | + if not tool_dependency_dir: |
| 782 | + tool_dependency_dir = os.path.abspath(os.path.dirname(conf_file)) |
| 783 | + self.tool_dependency_dir = tool_dependency_dir |
| 784 | + self.dependency_resolvers_config_file = conf_file |
| 785 | + else: |
| 786 | + self.use_tool_dependencies = False |
| 787 | + |
752 | 788 | if __name__ == "__main__":
|
753 | 789 | sys.exit(main(sys.argv[1:]))
|
0 commit comments