comparison env/lib/python3.9/site-packages/ephemeris/workflow_install.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 #!/usr/bin/env python
2 '''Tool to install workflows on a Galaxy instance.'''
3 import argparse
4 import json
5 import os
6
7 from . import get_galaxy_connection
8 from .common_parser import get_common_args
9
10
11 def import_workflow(gi, path, publish_wf=False):
12 """
13 Given a connection to a Galaxy Instance (gi) and a path to a Galaxy workflow file,
14 this function will import the worklfow into Galaxy.
15 """
16 with open(path, 'r') as wf_file:
17 import_uuid = json.load(wf_file).get('uuid')
18 existing_uuids = [d.get('latest_workflow_uuid') for d in gi.workflows.get_workflows()]
19 if import_uuid not in existing_uuids:
20 gi.workflows.import_workflow_from_local_path(path, publish=publish_wf)
21
22
23 def _parser():
24 parent = get_common_args()
25 parser = argparse.ArgumentParser(parents=[parent])
26 parser.add_argument("-w", "--workflow_path",
27 required=True,
28 help='Path to a workflow file or a directory with multiple workflow files ending with ".ga"')
29 parser.add_argument("--publish_workflows",
30 required=False,
31 action='store_true',
32 help='Flag to publish all imported workflows, so that they are viewable by other users')
33 return parser
34
35
36 def main():
37 """
38 This script uses bioblend to import .ga workflow files into a running instance of Galaxy
39 """
40 args = _parser().parse_args()
41 gi = get_galaxy_connection(args)
42
43 if os.path.isdir(args.workflow_path):
44 for file_path in os.listdir(args.workflow_path):
45 if file_path.endswith('.ga'):
46 import_workflow(gi, os.path.join(args.workflow_path, file_path), args.publish_workflows)
47 else:
48 import_workflow(gi, args.workflow_path, args.publish_workflows)
49
50
51 if __name__ == '__main__':
52 main()