Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.tool_shed.galaxy_install.migrate.common
from __future__ import print_function
import os
import sys
from six.moves import configparser
import galaxy.config
from galaxy.tool_shed.galaxy_install import (
installed_repository_manager,
tool_migration_manager
)
[docs]class MigrateToolsApplication(galaxy.config.ConfiguresGalaxyMixin):
"""Encapsulates the state of a basic Galaxy Universe application in order to initiate the Install Manager"""
[docs] def __init__(self, tools_migration_config):
install_dependencies = 'install_dependencies' in sys.argv
galaxy_config_file = 'galaxy.ini'
self.name = 'galaxy'
if '-c' in sys.argv:
pos = sys.argv.index('-c')
sys.argv.pop(pos)
galaxy_config_file = sys.argv.pop(pos)
if not os.path.exists(galaxy_config_file):
print("Galaxy config file does not exist (hint: use '-c config.ini' for non-standard locations): %s" % galaxy_config_file)
sys.exit(1)
config_parser = configparser.ConfigParser({'here': os.getcwd()})
config_parser.read(galaxy_config_file)
galaxy_config_dict = {}
for key, value in config_parser.items("app:main"):
galaxy_config_dict[key] = value
self.config = galaxy.config.Configuration(**galaxy_config_dict)
self.config.update_integrated_tool_panel = True
self._configure_object_store()
self._configure_security()
self._configure_models()
self._configure_datatypes_registry()
self._configure_tool_data_tables(from_shed_config=True)
self._configure_toolbox()
self._configure_tool_shed_registry()
self.installed_repository_manager = installed_repository_manager.InstalledRepositoryManager(self)
# Get the latest tool migration script number to send to the Install manager.
latest_migration_script_number = int(tools_migration_config.split('_')[0])
# The value of migrated_tools_config is migrated_tools_conf.xml, and is reserved for
# containing only those tools that have been eliminated from the distribution and moved
# to the tool shed. A side-effect of instantiating the ToolMigrationManager is the automatic
# installation of all appropriate tool shed repositories.
self.tool_migration_manager = \
tool_migration_manager.ToolMigrationManager(app=self,
latest_migration_script_number=latest_migration_script_number,
tool_shed_install_config=os.path.join(self.config.root,
'scripts',
'migrate_tools',
tools_migration_config),
migrated_tools_config=self.config.migrated_tools_config,
install_dependencies=install_dependencies)
@property
def sa_session(self):
return self.model.context.current