def main(argv=None): try: configuration = Configuration(argv) configuration.app = app = Application() website = Website(configuration) configuration.website = website # to support re-handling, especially website = configuration.hooks.run('startup', website) # change current working directory os.chdir(configuration.root) if configuration.conf.aspen.no('changes_kill'): # restart for template files too; # TODO can't we just invalidate the simplate cache for these? dot_aspen = join(configuration.root, '.aspen') for root, dirs, files in os.walk(dot_aspen): for filename in files: restarter.add(join(root, filename)) app.add_loop(Loop(restarter.loop)) port = configuration.address[1] app.add_service(Service(http.HttpServer(website), port)) log.warn("Greetings, program! Welcome to port %d." % port) app.run() except KeyboardInterrupt, SystemExit: configuration.hooks.run('shutdown', website)
def startup(website): """Given a Website, configure the rewrite module. """ confpath = join(website.root, '.aspen', 'etc', 'rewrite.conf') if not isfile(confpath): logging.info("No rewrite.conf") else: restarter.add(confpath) i = 0 for line in open(confpath): i += 1 line = line.split('#')[0].strip() if not line: continue parts = line.split() nparts = len(parts) try: assert nparts in [1,2,3] if nparts == 1: # will redirect to trailing slash pattern = parts[0] path = flags = '' elif nparts == 2: # will serve new path pattern, path = parts flags = '' else: assert nparts == 3 # sanity check pattern, path, flags = parts assert flags.startswith('[') assert flags.endswith(']') flags = flags[1:-1] except AssertionError: raise ConfFileError("Malformed line.", "rewrite.conf", i) mapping = Mapping(pattern, path, flags) mappings.append(mapping) if 'A' not in flags: protected.append(path)
def startup(website): """Given a Website, configure the rewrite module. """ confpath = join(website.root, '.aspen', 'etc', 'rewrite.conf') if not isfile(confpath): logging.info("No rewrite.conf") else: restarter.add(confpath) i = 0 for line in open(confpath): i += 1 line = line.split('#')[0].strip() if not line: continue parts = line.split() nparts = len(parts) try: assert nparts in [1, 2, 3] if nparts == 1: # will redirect to trailing slash pattern = parts[0] path = flags = '' elif nparts == 2: # will serve new path pattern, path = parts flags = '' else: assert nparts == 3 # sanity check pattern, path, flags = parts assert flags.startswith('[') assert flags.endswith(']') flags = flags[1:-1] except AssertionError: raise ConfFileError("Malformed line.", "rewrite.conf", i) mapping = Mapping(pattern, path, flags) mappings.append(mapping) if 'A' not in flags: protected.append(path)