mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-08-31 01:02:04 +08:00
83 lines
2.7 KiB
Python
83 lines
2.7 KiB
Python
import argparse
|
|
import os
|
|
import sys
|
|
from configparser import ConfigParser
|
|
|
|
from sqlalchemy import (
|
|
create_engine,
|
|
MetaData,
|
|
)
|
|
from sqlalchemy.orm import (
|
|
scoped_session,
|
|
sessionmaker,
|
|
)
|
|
|
|
sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, "lib")))
|
|
|
|
import galaxy.model.tool_shed_install.mapping as mapping
|
|
|
|
|
|
def main(opts, session, model):
|
|
"""
|
|
Find all tool shed repositories with the bad path and update with the correct path.
|
|
"""
|
|
for row in session.query(model.ToolShedRepository).all():
|
|
if "shed_config_filename" in row.metadata_:
|
|
if row.metadata_["shed_config_filename"] == opts.bad_filename:
|
|
row.metadata_["shed_config_filename"] = opts.good_filename
|
|
session.add(row)
|
|
session.commit()
|
|
return 0
|
|
|
|
|
|
def create_database(config_file):
|
|
parser = ConfigParser()
|
|
parser.read(config_file)
|
|
# Determine which database connection to use.
|
|
database_connection = parser.get("app:main", "install_database_connection")
|
|
if database_connection is None:
|
|
database_connection = parser.get("app:main", "database_connection")
|
|
if database_connection is None:
|
|
database_connection = "sqlite:///{}".format(parser.get("app:main", "database_file"))
|
|
if database_connection is None:
|
|
print("Unable to determine correct database connection.")
|
|
exit(1)
|
|
|
|
# Initialize the database connection.
|
|
engine = create_engine(database_connection)
|
|
MetaData(bind=engine)
|
|
install_session = scoped_session(sessionmaker(bind=engine, autoflush=False))
|
|
model = mapping.init(database_connection)
|
|
return install_session, model
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"--config_file", dest="config_file", required=True, help="The path to your Galaxy configuration .ini file."
|
|
)
|
|
parser.add_argument(
|
|
"--from",
|
|
dest="bad_filename",
|
|
required=True,
|
|
help="The old, invalid path to the shed_tool_conf.xml or migrated_tools_conf.xml file.",
|
|
)
|
|
parser.add_argument(
|
|
"--to",
|
|
dest="good_filename",
|
|
required=True,
|
|
help="The updated path to the shed_tool_conf.xml or migrated_tools_conf.xml file.",
|
|
)
|
|
parser.add_argument(
|
|
"--force",
|
|
dest="force",
|
|
action="store_true",
|
|
help="Use this flag to set the new path even if the file does not (yet) exist there.",
|
|
)
|
|
opts = parser.parse_args()
|
|
if not os.path.exists(opts.good_filename) and not opts.force:
|
|
print(f"The file {opts.good_filename} does not exist, use the --force option to proceed.")
|
|
exit(1)
|
|
session, model = create_database(opts.config_file)
|
|
exit(main(opts, session, model))
|