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()
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]
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)
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()
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
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()
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()
def start_server(port): for line in LOGO_LARGE: logger.info(line) print() server.start(port, utils.locate_base_dir())
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))
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
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)
def start_server(port): for line in LOGO_LARGE: logger.info(line) print() path = Command.locate_base_dir() server.start(port, path=path)