Example #1
0
File: cli.py Project: dowski/aspen
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)
Example #2
0
File: cli.py Project: dowski/aspen
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)
Example #3
0
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)
Example #4
0
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)