def __init__(self, path, database_file): self.path = path # parse config file(s) config_filename = cherrypy.config[CONFIG_KEY] if not os.path.exists(config_filename): raise IOError(errno.ENOENT, "Config file '%s' not found" % config_filename) if cherrypy.config.has_key(CONFIG_DEFAULTS_KEY): defaults_filename = cherrypy.config[CONFIG_DEFAULTS_KEY] # if defaults file doesn't exist, then don't use it if not os.path.exists(defaults_filename): sys.stderr.write("Warning: configured defaults file " " '%s' doesn't exist\n" % defaults_filename) defaults_filename = None else: defaults_filename = None self._config = ConfigParser(config_filename, defaults_filename) # initialise the schedule manager schedule_filename = cherrypy.config[SCHEDULE_KEY] self._schedule = ScheduleParser(config_filename, schedule_filename) # initialise storage self._storage = BowerbirdStorage(database_file, self._config, self._schedule)
def main(): # parse commandline options parser = OptionParser() parser.add_option('-b', '--base_directory', dest='base_directory', help='base directory', default=BASE_DIRECTORY) parser.add_option('-c', '--config', dest='config', help='configuration_file') parser.add_option('-d', '--database-file', dest='database', help='database file') parser.add_option('-s', '--schedule-file', dest='schedule', help='schedule file') parser.add_option('-f', '--force-rescan', action='store_true', dest='force_rescan', help='force reconstruction of recordings', default=False) parser.add_option('-v', '--verbose', action='store_true', dest='verbose', help='add commentary to the process', default=False) (options, args) = parser.parse_args() if not options.config: options.config = os.path.join(options.base_directory, DEFAULT_CONFIG) if not options.database: options.database = os.path.join(options.base_directory, DEFAULT_DATABASE) if not options.schedule: options.schedule = os.path.join(options.base_directory, DEFAULT_SCHEDULE) if not os.path.exists(options.config): print >> sys.stderr, "fatal error: config file '%s' does not exist" % options.config sys.exit(1) config = ConfigParser(options.config) schedule = ScheduleParser(options.config, options.schedule) storage = BowerbirdStorage(options.database, config, schedule) # if requested, clear all recordings so they are re-constructed if options.force_rescan: storage.clearRecordingFiles() storage.clearRecordings() # call the update method storage.updateRecordingsFromFiles(options.force_rescan, options.verbose)