def update_tool(context,galaxy,toolshed,owner,repository): """ Update tool installed from toolshed. Updates the specified tool from REPOSITORY owned by OWNER in TOOLSHED, to the latest revision in GALAXY. The tool must already be present in GALAXY and a newer changeset revision must be available. The update will be installed into the same tool panel section as the original tool. """ # Get a Galaxy instance gi = context.galaxy_instance(galaxy) if gi is None: logger.critical("Failed to connect to Galaxy instance") return 1 # Install tool return tools.update_tool(gi,toolshed,repository,owner, timeout=timeout,no_wait=no_wait)
def manage_tools(args=None): """ Implements the 'manage_tools' utility """ deprecation_warning() if args is None: args = sys.argv[1:] p = base_parser(usage=\ "\n\t%prog list GALAXY_URL [options]" "\n\t%prog installed GALAXY_URL [options]" "\n\t%prog tool_panel GALAXY_URL [options]" "\n\t%prog install GALAXY_URL [options] SHED OWNER TOOL [REVISION]" "\n\t%prog update GALAXY_URL [options] SHED OWNER TOOL", description="Manage and install tools in a Galaxy " "instance") commands = ['list','installed','tool_panel','install','update'] # Get compulsory arguments if len(args) == 1: if args[0] == '-h' or args[0] == '--help': p.print_usage() elif args[0] == '--version': p.print_version() sys.exit(0) if len(args) < 2: p.error("need to supply a command and a Galaxy URL/alias") command = args[0] galaxy_url = args[1] # Setup additional command line options if command not in commands: p.error("unrecognised command: '%s'" % command) elif command == 'list': p.set_usage("%prog list GALAXY_URL [options]") p.add_option('--name',action='store',dest='name',default=None, help="specific tool name(s) to list") p.add_option('--installed',action='store_true', dest='installed_only',default=False, help="only list tools installed from a toolshed") elif command == 'installed': p.set_usage("%prog installed GALAXY_URL [options]") p.add_option('--name',action='store',dest='name',default=None, help="specific tool repository/ies to list") p.add_option('--toolshed',action='store',dest='toolshed',default=None, help="only list repositories from TOOLSHED") p.add_option('--owner',action='store',dest='owner',default=None, help="only list repositories owned by OWNER") p.add_option('--list-tools',action='store_true',dest='list_tools', default=None, help="list the associated tools for each repository") p.add_option('--updateable',action='store_true',dest='updateable', default=None, help="only show repositories with uninstalled updates " "or upgrades") elif command == 'tool_panel': p.set_usage("%prog tool_panel GALAXY_URL [options]") p.add_option('--name',action='store',dest='name',default=None, help="specific tool panel section(s) to list") p.add_option('--list-tools',action='store_true',dest='list_tools', default=None, help="list the associated tools for each section") elif command == 'install': p.set_usage("%prog install GALAXY_URL [options] SHED OWNER TOOL " "[REVISION]") p.add_option('--tool-panel-section',action='store', dest='tool_panel_section',default=None, help="tool panel section name or id to install the " "tool under") elif command == 'update': p.set_usage("%prog update GALAXY_URL [options] SHED OWNER TOOL") # Process remaining arguments on command line if args[1] in ('-h','--help','--version'): args = args[1:] else: args = args[2:] options,args = p.parse_args(args) handle_debug(debug=options.debug) handle_suppress_warnings(suppress_warnings=options.suppress_warnings) handle_ssl_warnings(verify=(not options.no_verify)) # Handle password if required email,password = handle_credentials(options.username, options.galaxy_password, prompt="Password for %s: " % galaxy_url) # Get a Galaxy instance gi = get_galaxy_instance(galaxy_url,api_key=options.api_key, email=email,password=password, verify_ssl=(not options.no_verify)) if gi is None: logger.critical("Failed to connect to Galaxy instance") sys.exit(1) # Execute command if command == 'list': tools.list_tools(gi,name=options.name, installed_only=options.installed_only) elif command == 'installed': tools.list_installed_repositories(gi,name=options.name, toolshed=options.toolshed, owner=options.owner, list_tools=options.list_tools, only_updateable=options.updateable) elif command == 'tool_panel': tools.list_tool_panel(gi,name=options.name, list_tools=options.list_tools) elif command == 'install': if len(args) < 3: p.error("Need to supply toolshed, owner, repo and optional " "revision") toolshed,owner,repo = args[:3] if len(args) == 4: revision = args[3] else: revision = None status = tools.install_tool( gi,toolshed,repo,owner,revision=revision, tool_panel_section=options.tool_panel_section) sys.exit(status) elif command == 'update': if len(args) != 3: p.error("Need to supply toolshed, owner and repo") toolshed,owner,repo = args[:3] status = tools.update_tool(gi,toolshed,repo,owner) sys.exit(status)