Example #1
0
def test(HandlerClass,
         ServerClass, protocol="HTTP/1.0"):
    """Test the HTTP request handler class.

    This runs an HTTP server on port 8000 (or the first command line
    argument).

    """

    if sys.argv[1:]:
        port = int(sys.argv[1])
    else:
        port = 8000
    server_address = ('', port)

    HandlerClass.protocol_version = protocol
    httpd = ServerClass(server_address, HandlerClass)

    sa = httpd.socket.getsockname()
    for line in LOGO:
        logger.info(line)
    print


    HELP_INFO = (
        "Server started in `{0}`'".format(settings.PUBLISH_DIR),
        "To see your site, visit http://localhost:{0}".format(port),
        "To shut down Crotal, press <CTRL> + C at any time."
    )
    for line in HELP_INFO:
        logger.info(line)
    print
    httpd.serve_forever()
Example #2
0
File: db.py Project: dinever/crotal
    def get_table(self, table):
        """
        Get a table object, same to ``self.__getitem__``.

        :param table: Name of the table acquired.
        :return: A ``table`` object.
        """
        if table not in self._tables:
            self._tables[table] = Table(table, content={})
            logger.info('New table "{0}" created.'.format(table))
            return self._tables[table]
        else:
            return self._tables[table]
Example #3
0
def init_git_repo(tar_dir):
    """
    Creates & init empty repo in `tar_dir'. Also it creates `source', `master' branches
    and commit initial changes into it.
    """
    try:
        tar_dir = os.path.realpath(tar_dir)
        repo = git.Repo.init(path=tar_dir)
        repo.git.commit(allow_empty=True, m="Created master")
        repo.git.checkout(orphan="source")
        repo.git.add(tar_dir)
        repo.git.commit(tar_dir, m="initial commit")
        logger.info("Git repository initialised")
    except git.GitCommandError, gitErr:
        logger.warning(gitErr)
Example #4
0
def init_git_repo(tar_dir):
    """
    Creates & init empty repo in `tar_dir'. Also it creates `source', `master' branches
    and commit initial changes into it.
    """
    try:
        tar_dir = os.path.realpath(tar_dir)
        repo = git.Repo.init(path=tar_dir)
        repo.git.commit(allow_empty=True, m="Created master")
        repo.git.checkout(orphan="source")
        repo.git.add(tar_dir)
        repo.git.commit(tar_dir, m="initial commit")
        logger.info("Git repository initialised")
    except git.GitCommandError, gitErr:
        logger.warning(gitErr)
Example #5
0
def main(settings):
    Command.generate(silent=True)
    serverThread = ServerThread()
    serverThread.daemon = True
    serverThread.start()
    observer = Observer()
    observer.schedule(ChangeHandler(settings), path=settings.POSTS_DIR, recursive=True)
    observer.schedule(ChangeHandler(settings), path=settings.PAGES_DIR, recursive=True)
    observer.schedule(ChangeHandler(settings), path=settings.TEMPLATES_DIR, recursive=True)
    observer.schedule(ChangeHandler(settings), path=settings.THEME_STATIC_DIR, recursive=True)
    observer.start()
    while True:
        try:
            time.sleep(1)
        except KeyboardInterrupt:
            logger.info('Server shutting down.')
            sys.exit()
Example #6
0
 def process_directory(self, directory):
     """
     This method returns the list of all the source files in the directory
     indicated. Notice that filename started with '-' or '.' will not be
     included.
     """
     filename_list = []
     for dir_, _, files in os.walk(directory):
         for filename in files:
             if re.match(EXCLUDE_PATTERN, filename):
                 logger.info("skip %s" % filename)
                 continue
             relative_dir = os.path.relpath(dir_, directory)
             relative_file = os.path.join(relative_dir, filename)
             absolute_file = os.path.join(dir_, filename)
             if relative_file.startswith('_') is False and \
                     filename.startswith('.') is False:
                 filepath = os.path.join(directory, relative_file)
                 filename_list.append(os.path.normpath(filepath))
     return filename_list
Example #7
0
 def process_directory(self, directory):
     """
     This method returns the list of all the source files in the directory
     indicated. Notice that filename started with '-' or '.' will not be
     included.
     """
     filename_list = []
     for dir_, _, files in os.walk(directory):
         for filename in files:
             if re.match(EXCLUDE_PATTERN, filename):
                 logger.info("skip %s" % filename)
                 continue
             relative_dir = os.path.relpath(dir_, directory)
             relative_file = os.path.join(relative_dir, filename)
             absolute_file = os.path.join(dir_, filename)
             if relative_file.startswith('_') is False and \
                     filename.startswith('.') is False:
                 filepath = os.path.join(directory, relative_file)
                 filename_list.append(os.path.normpath(filepath))
     return filename_list
Example #8
0
    def _run(self, handler_class,
         server_class, protocol="HTTP/1.0"):
        """
        Test the HTTP request handler class.

        This runs an HTTP server on port 8000 (or the first command line
        argument).

        """

        server_address = ('', self.port)

        handler_class.protocol_version = protocol
        handler_class.routes = self.routes

        httpd = server_class(server_address, handler_class)

        for line in self.help_info:
            logger.info(line)
        print
        httpd.serve_forever()
Example #9
0
def start(port, path=os.getcwd()):
    if not path:
        sys.exit()
    site = Site(path)
    site.generate()
    config = Config(path)
    serverThread = ServerThread(config, port)
    serverThread.daemon = True
    serverThread.start()
    observer = Observer()
    for loader in site.loaders:
        for path in loader.path:
            observer.schedule(ChangeHandler(config, site, ignore_patterns=["*/.DS_Store"]),
                              path=os.path.join(config.base_dir, path), recursive=True)
    observer.start()
    while True:
        try:
            time.sleep(1)
        except KeyboardInterrupt:
            logger.info('Server shutting down.')
            sys.exit()
Example #10
0
 def start_server(port):
     for line in LOGO_LARGE:
         logger.info(line)
     print()
     server.start(port, utils.locate_base_dir())
Example #11
0
 def generate(full=False, output=None):
     start = time.time()
     site = Site(utils.locate_base_dir(), full=full, output=output)
     site.generate()
     end = time.time()
     logger.info("Site generated in {0:.2f} seconds.".format(end-start))
Example #12
0
 def count_func_time(*args, **kwargs):
     start = time.time()
     result = func(*args, **kwargs)
     end = time.time()
     logger.info("Execution Time of {0}: {1:.2f} seconds".format(func.__name__, end - start))
     return result
Example #13
0
    def generate(full=False, silent=False, is_preview=True):
        if full and os.path.exists(settings.PUBLISH_DIR):
            shutil.rmtree(settings.PUBLISH_DIR)
        utils.load_config_file()
        setattr(settings, 'THEME_DIR', os.path.join('themes', settings.theme))
        setattr(settings, 'TEMPLATES_DIR',
                os.path.join(settings.THEME_DIR, 'public'))
        setattr(settings, 'THEME_STATIC_DIR',
                os.path.join(settings.THEME_DIR, 'static'))
        start = timeit.default_timer()

        controller = Controller(full=full)
        copydir_time = timeit.default_timer()
        if not silent:
            logger.info('Static files copied.')

        controller.load(is_preview)
        if not silent:
            logger.info('Source loaded.')

        get_posts_time = timeit.default_timer()

        controller.save()
        save_other_files_time = timeit.default_timer()

        controller.save_posts()
        if not silent:
            logger.info('Posts saved.')
        controller.save_pages()
        if not silent:
            logger.info('Pages saved.')
        controller.save_categories()
        controller.save_tags()

        save_posts_time = timeit.default_timer()
        controller.save_db()
        remove_dir(settings.PUBLISH_DIR)

        if not silent:
            logger.info('%d posts generated.' %
                        len(controller.post_collector.posts))
            logger.info('%d pages generated.' %
                        len(controller.page_collector.pages))
            logger.info('Site generated, master %s!' % settings.author)
Example #14
0
    def generate(full=False, silent=False, is_preview=True):
        if full and os.path.exists(settings.PUBLISH_DIR):
            shutil.rmtree(settings.PUBLISH_DIR)
        utils.load_config_file()
        setattr(settings, 'THEME_DIR', os.path.join('themes', settings.theme))
        setattr(settings, 'TEMPLATES_DIR', os.path.join(settings.THEME_DIR, 'public'))
        setattr(settings, 'THEME_STATIC_DIR', os.path.join(settings.THEME_DIR, 'static'))
        start = timeit.default_timer()

        controller = Controller(full=full)
        copydir_time = timeit.default_timer()
        if not silent:
            logger.info('Static files copied.')

        controller.load(is_preview)
        if not silent:
            logger.info('Source loaded.')

        get_posts_time = timeit.default_timer()

        controller.save()
        save_other_files_time = timeit.default_timer()

        controller.save_posts()
        if not silent:
            logger.info('Posts saved.')
        controller.save_pages()
        if not silent:
            logger.info('Pages saved.')
        controller.save_categories()
        controller.save_tags()

        save_posts_time = timeit.default_timer()
        controller.save_db()
        remove_dir(settings.PUBLISH_DIR)

        if not silent:
            logger.info('%d posts generated.' % len(controller.post_collector.posts))
            logger.info('%d pages generated.' % len(controller.page_collector.pages))
            logger.info('Site generated, master %s!' % settings.author)
Example #15
0
 def start_server(port):
     for line in LOGO_LARGE:
         logger.info(line)
     print()
     path = Command.locate_base_dir()
     server.start(port, path=path)