def configuration(broker, args): usage = "%prog configuration [options]" description = "Description: generate default configuration and logging files" epilog = """ Examples: Generate default application config files: > python mediarover.py configuration --write Generate default application config files, in a specific directory: > python mediarover.py configuration --write --config /path/to/config/dir Process tv_root and generate series filters > python mediarover.py configuration --generate-filters Advanced Example: Generate default application config files, set tv_root to given value(s), and generate series filters Note: multiple tv_root values must be separated by commas, no spaces > python mediarover.py configuration --write /path/to/tv,/path/to/more/tv --generate-filters """ parser = OptionParser(usage=usage, description=description, epilog=epilog, add_help_option=False) parser.add_option("-c", "--config", metavar="/PATH/TO/CONFIG/DIR", help="path to application configuration directory") parser.add_option("--generate-filters", action="store_true", default=False, help="Generate default series filters") parser.add_option("--write", action="store_true", default=False, help="Generate default configuration and logging files") parser.add_option("-h", "--help", action="callback", callback=print_epilog, help="show this help message and exit") (options, args) = parser.parse_args(args) if options.config: broker.register(CONFIG_DIR, options.config) if options.write: if len(args) > 0: tv_root = args[0] generate_filters = options.generate_filters else: tv_root = None generate_filters = False generate_config_files(broker[RESOURCES_DIR], broker[CONFIG_DIR], tv_root, generate_filters) elif options.generate_filters: try: config = get_processed_app_config(broker[RESOURCES_DIR], broker[CONFIG_DIR]) except (ConfigurationError), e: print e exit(1) else: generate_series_filters(broker[RESOURCES_DIR], broker[CONFIG_DIR], config)
def write_configs(broker, args): usage = "%prog write-configs [options]" description = "Description: generate default configuration and logging files" epilog = """ Examples: Generate default application config files: > python mediarover.py write-configs Generate default application config files, in a specific directory: > python mediarover.py write-configs --config /path/to/config/dir """ parser = OptionParser(usage=usage, description=description, epilog=epilog, add_help_option=False) parser.add_option("-c", "--config", metavar="/PATH/TO/CONFIG/DIR", help="path to application configuration directory") parser.add_option("-h", "--help", action="callback", callback=print_usage, help="show this help message and exit") (options, args) = parser.parse_args(args) if options.config: broker.register('config_dir', options.config) generate_config_files(broker['resources_dir'], broker['config_dir'])
def bootstrap(options, args): """ config setup """ # determine path of config directory if options.config: config_dir = options.config elif os.name == "nt": if "LOCALAPPDATA" in os.environ: # Vista or better default path config_dir = os.path.expandvars("%LOCALAPPDATA%\Mediarover") else: # XP default path config_dir = os.path.expandvars("%APPDATA%\Mediarover") else: # os.name == "posix": config_dir = os.path.expanduser("~/.mediarover") # if config_dir doesn't exist, create it if not os.path.isdir(config_dir): generate_config_files(config_dir) config = read_config(config_dir) """ logging setup """ # initialize and retrieve logger for later use logging.config.fileConfig(open(os.path.join(config_dir, "ui_logging.conf"))) logger = logging.getLogger("mediarover.interface") """ main """ logger.info("--- STARTING ---") logger.debug("using config directory: %s", config_dir) # set a few config values cherrypy_config = { "server.environment": "production", "server.log_to_screen": True, "server.log_file": os.path.join(config_dir, "logs", "ui.log"), "/js": { "static_filter.on": True, "static_filter.dir": os.path.join( os.path.abspath(config["ui"]["templates_dir"]), config["ui"]["template"], "static", "js" ), "static_filter.content_types": {"js": "application/x-javascript"}, }, "/css": { "static_filter.on": True, "static_filter.dir": os.path.join( os.path.abspath(config["ui"]["templates_dir"]), config["ui"]["template"], "static", "css" ), "static_filter.content_types": {"css": "text/css"}, }, } # merge user defined settings from config file cherrypy_config.update(config["ui"]["server"]) # configure cherrypy using default and user provided values cherrypy.config.update(updateMap=cherrypy_config) # launch cherry web server cherrypy.root = Mrconfig(config) cherrypy.server.start()