1313from .common_parser import get_common_args
1414
1515
16+ def get_tool_panel (gi ):
17+ tool_client = ToolClient (gi )
18+ return tool_client .get_tool_panel ()
19+
20+
21+ def tools_for_repository (gi , repository ):
22+ tool_shed_url = repository .get ('tool_shed_url' )
23+ name = repository ['name' ]
24+ owner = repository ['owner' ]
25+ changeset_revision = repository .get ('changeset_revision' )
26+
27+ tools = []
28+
29+ def handle_tool (tool_elem ):
30+ if not tool_elem .get ('tool_shed_repository' , None ):
31+ return
32+ tsr = tool_elem ['tool_shed_repository' ]
33+ if tsr ['name' ] != name or tsr ['owner' ] != owner :
34+ return
35+
36+ if tool_shed_url and tsr ['tool_shed' ] != tool_shed_url :
37+ return
38+
39+ if changeset_revision and changeset_revision != tsr ["changeset_revision" ]:
40+ return
41+
42+ tools .append (tool_elem )
43+
44+ walk_tools (get_tool_panel (gi ), handle_tool )
45+
46+ return tools
47+
48+
49+ def walk_tools (tool_panel , f ):
50+ for elem in tool_panel :
51+ if elem ['model_class' ] == 'Tool' :
52+ f (elem )
53+ elif elem ['model_class' ] == 'ToolSection' :
54+ walk_tools (elem .get ("elems" , []), f )
55+
56+
1657class GiToToolYaml :
1758 def __init__ (self , gi ,
1859 include_tool_panel_section_id = False ,
@@ -34,8 +75,7 @@ def toolbox(self):
3475 """
3576 Gets the toolbox elements from <galaxy_url>/api/tools
3677 """
37- tool_client = ToolClient (self .gi )
38- return tool_client .get_tool_panel ()
78+ return get_tool_panel (self .gi )
3979
4080 @property
4181 def installed_tool_list (self ):
@@ -52,15 +92,14 @@ def get_repositories(self):
5292 Parse these accordingly to get a list of repositories.
5393 """
5494 repositories = []
55- for elem in self .toolbox :
56- if elem ['model_class' ] == 'Tool' :
57- repo = get_repo_from_tool (elem )
58- if repo :
59- repositories .append (repo )
60- elif elem ['model_class' ] == 'ToolSection' :
61- new_repos = get_repos_from_section (elem )
62- if new_repos :
63- repositories .extend (new_repos )
95+
96+ def record_repo (tool_elem ):
97+ repo = get_repo_from_tool (tool_elem )
98+ if repo :
99+ repositories .append (repo )
100+
101+ walk_tools (self .toolbox , record_repo )
102+
64103 if self .get_data_managers :
65104 for tool in self .installed_tool_list :
66105 if tool .get ("model_class" ) == 'DataManagerTool' :
@@ -156,20 +195,6 @@ def get_repo_from_tool(tool):
156195 return repo
157196
158197
159- def get_repos_from_section (section ):
160- repos = []
161- for elem in section ['elems' ]:
162- if elem ['model_class' ] == 'Tool' :
163- repo = get_repo_from_tool (elem )
164- if repo :
165- repos .append (repo )
166- elif elem ['model_class' ] == 'ToolSection' :
167- new_repos = get_repos_from_section (elem )
168- if new_repos :
169- repos .extend (new_repos )
170- return repos
171-
172-
173198def _parse_cli_options ():
174199 """
175200 Parse command line options, returning `parse_args` from `ArgumentParser`.
0 commit comments