Mercurial > kallithea
view rhodecode/config/setup_rhodecode.py @ 2729:e9e7c40b4f1a beta
added deque with maxlen for py2.5 compat
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 22 Aug 2012 12:09:49 +0200 |
parents | 5893414dea91 |
children | 29630805893d |
line wrap: on
line source
import os from paste.script.appinstall import AbstractInstallCommand from paste.script.command import BadCommand from paste.deploy import appconfig class SetupCommand(AbstractInstallCommand): default_verbosity = 1 max_args = 1 min_args = 1 summary = "Setup an application, given a config file" usage = "CONFIG_FILE" description = """\ Note: this is an experimental command, and it will probably change in several ways by the next release. Setup an application according to its configuration file. This is the second part of a two-phase web application installation process (the first phase is prepare-app). The setup process may consist of things like creating directories and setting up databases. """ parser = AbstractInstallCommand.standard_parser( simulate=True, quiet=True, interactive=True) parser.add_option('--user', action='store', dest='username', default=None, help='Admin Username') parser.add_option('--email', action='store', dest='email', default=None, help='Admin Email') parser.add_option('--password', action='store', dest='password', default=None, help='Admin password min 6 chars') parser.add_option('--repos', action='store', dest='repos_location', default=None, help='Absolute path to repositories location') parser.add_option('--name', action='store', dest='section_name', default=None, help='The name of the section to set up (default: app:main)') def command(self): config_spec = self.args[0] section = self.options.section_name if section is None: if '#' in config_spec: config_spec, section = config_spec.split('#', 1) else: section = 'main' if not ':' in section: plain_section = section section = 'app:'+section else: plain_section = section.split(':', 1)[0] if not config_spec.startswith('config:'): config_spec = 'config:' + config_spec if plain_section != 'main': config_spec += '#' + plain_section config_file = config_spec[len('config:'):].split('#', 1)[0] config_file = os.path.join(os.getcwd(), config_file) self.logging_file_config(config_file) conf = appconfig(config_spec, relative_to=os.getcwd()) ep_name = conf.context.entry_point_name ep_group = conf.context.protocol dist = conf.context.distribution if dist is None: raise BadCommand( "The section %r is not the application (probably a filter). " "You should add #section_name, where section_name is the " "section that configures your application" % plain_section) installer = self.get_installer(dist, ep_group, ep_name) installer.setup_config( self, config_file, section, self.sysconfig_install_vars(installer)) self.call_sysconfig_functions( 'post_setup_hook', installer, config_file)