mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-16 15:45:04 +08:00
81 lines
3.1 KiB
Python
81 lines
3.1 KiB
Python
#! /usr/bin/env python
|
|
"""
|
|
galaxy_config_merger.py
|
|
|
|
Created by Anne Pajon on 31 Jan 2012
|
|
|
|
Copyright (c) 2012 Cancer Research UK - Cambridge Research Institute.
|
|
|
|
Script for merging specific local Galaxy config galaxy.ini.cri with default Galaxy galaxy.ini.sample
|
|
"""
|
|
|
|
import configparser
|
|
import logging
|
|
import optparse
|
|
import sys
|
|
|
|
|
|
def main():
|
|
# logging configuration
|
|
logging.basicConfig(format="%(levelname)s: %(message)s", level=logging.INFO)
|
|
|
|
# get the options
|
|
parser = optparse.OptionParser()
|
|
parser.add_option("-s", "--sample", dest="sample", action="store", help="path to Galaxy galaxy.ini.sample file")
|
|
parser.add_option("-c", "--config", dest="config", action="store", help="path to your own galaxy.ini file")
|
|
parser.add_option(
|
|
"-o", "--output", dest="output", action="store", help="path to the new merged galaxy.ini.new file"
|
|
)
|
|
options, args = parser.parse_args()
|
|
|
|
for option in ["sample", "config"]:
|
|
if getattr(options, option) is None:
|
|
print(f"Please supply a --{option} parameter.\n")
|
|
parser.print_help()
|
|
sys.exit()
|
|
|
|
config_sample = configparser.RawConfigParser()
|
|
config_sample.read(options.sample)
|
|
config_sample_content = open(options.sample).read()
|
|
|
|
config = configparser.RawConfigParser()
|
|
config.read(options.config)
|
|
|
|
logging.info(f"Merging your own config file {options.config} into the sample one {options.sample}.")
|
|
logging.info("---------- DIFFERENCE ANALYSIS BEGIN ----------")
|
|
for section in config.sections():
|
|
if not config_sample.has_section(section):
|
|
logging.warning("-MISSING- section [%s] not found in sample file. It will be ignored.", section)
|
|
else:
|
|
for name, value in config.items(section):
|
|
if not config_sample.has_option(section, name):
|
|
if f"#{name}" not in config_sample_content:
|
|
logging.warning(
|
|
f"-MISSING- section [{section}] option '{name}' not found in sample file. It will be ignored."
|
|
)
|
|
else:
|
|
logging.info(
|
|
f"-notset- section [{section}] option '{name}' not set in sample file. It will be added."
|
|
)
|
|
config_sample.set(section, name, value)
|
|
else:
|
|
if not config_sample.get(section, name) == value:
|
|
logging.info(
|
|
f"- diff - section [{section}] option '{name}' has different value ('{config_sample.get(section, name)}':'{value}'). It will be modified."
|
|
)
|
|
config_sample.set(section, name, value)
|
|
logging.info("---------- DIFFERENCE ANALYSIS END ----------")
|
|
|
|
if options.output:
|
|
outputfile = open(options.output, "w")
|
|
config_sample.write(outputfile)
|
|
outputfile.close()
|
|
else:
|
|
logging.info("use -o OUTPUT to write the merged configuration into a file.")
|
|
|
|
logging.info("read Galaxy galaxy.ini.sample for detailed information.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|