Esempio n. 1
0
def build_website(args):
    logging.info('Building website')
    env = util.init_jinja2_env(args)

    shutil.copytree(args.website_dir,
                    args.output_dir,
                    ignore=shutil.ignore_patterns('*.md', '*.sh', '*.css',
                                                  '*.json', 'js/*.js', 'build',
                                                  'docs', 'public',
                                                  'node_modules', 'templates',
                                                  'locale'))
    shutil.copy2(os.path.join(args.website_dir, 'js', 'embedd.min.js'),
                 os.path.join(args.output_dir, 'js', 'embedd.min.js'))

    for root, _, filenames in os.walk(args.output_dir):
        for filename in filenames:
            if filename == 'main.html':
                continue

            path = os.path.join(root, filename)
            if not filename.endswith('.html'):
                continue
            logging.info('Processing %s', path)
            with open(path, 'rb') as f:
                content = f.read().decode('utf-8')

            template = env.from_string(content)
            content = template.render(args.__dict__)

            with open(path, 'wb') as f:
                f.write(content.encode('utf-8'))
Esempio n. 2
0
def build_website(args):
    logging.info('Building website')
    env = util.init_jinja2_env(args)

    shutil.copytree(args.website_dir,
                    args.output_dir,
                    ignore=shutil.ignore_patterns('*.md', '*.sh', '*.css',
                                                  '*.json', 'js/*.js', 'build',
                                                  'docs', 'public',
                                                  'node_modules', 'templates',
                                                  'locale', '.gitkeep'))

    # This file can be requested to check for available ClickHouse releases.
    shutil.copy2(
        os.path.join(args.src_dir, 'utils', 'list-versions',
                     'version_date.tsv'),
        os.path.join(args.output_dir, 'data', 'version_date.tsv'))

    for root, _, filenames in os.walk(args.output_dir):
        for filename in filenames:
            if filename == 'main.html':
                continue

            path = os.path.join(root, filename)
            if not filename.endswith('.html'):
                continue
            logging.info('Processing %s', path)
            with open(path, 'rb') as f:
                content = f.read().decode('utf-8')

            template = env.from_string(content)
            content = template.render(args.__dict__)

            with open(path, 'wb') as f:
                f.write(content.encode('utf-8'))
Esempio n. 3
0
def build_website(args):
    logging.info("Building website")
    env = util.init_jinja2_env(args)

    shutil.copytree(
        args.website_dir,
        args.output_dir,
        ignore=shutil.ignore_patterns(
            "*.md",
            "*.sh",
            "*.css",
            "*.json",
            "js/*.js",
            "build",
            "docs",
            "public",
            "node_modules",
            "src",
            "templates",
            "locale",
            ".gitkeep",
        ),
    )

    shutil.copytree(
        os.path.join(args.website_dir, "images"),
        os.path.join(args.output_dir, "docs", "images"),
    )

    # This file can be requested to check for available ClickHouse releases.
    shutil.copy2(
        os.path.join(args.src_dir, "utils", "list-versions",
                     "version_date.tsv"),
        os.path.join(args.output_dir, "data", "version_date.tsv"),
    )

    # This file can be requested to install ClickHouse.
    shutil.copy2(
        os.path.join(args.src_dir, "docs", "_includes", "install",
                     "universal.sh"),
        os.path.join(args.output_dir, "data", "install.sh"),
    )

    for root, _, filenames in os.walk(args.output_dir):
        for filename in filenames:
            if filename == "main.html":
                continue

            path = os.path.join(root, filename)
            if not filename.endswith(".html"):
                continue
            logging.info("Processing %s", path)
            with open(path, "rb") as f:
                content = f.read().decode("utf-8")

            template = env.from_string(content)
            content = template.render(args.__dict__)

            with open(path, "wb") as f:
                f.write(content.encode("utf-8"))
Esempio n. 4
0
def build_for_lang(lang, args):
    logging.info(f'Building {lang} blog')

    try:
        theme_cfg = {
            'name':
            None,
            'custom_dir':
            os.path.join(os.path.dirname(__file__), '..', args.theme_dir),
            'language':
            lang,
            'direction':
            'ltr',
            'static_templates': ['404.html'],
            'extra': {
                'now': int(time.mktime(datetime.datetime.now().timetuple())
                           )  # TODO better way to avoid caching
            }
        }

        # the following list of languages is sorted according to
        # https://en.wikipedia.org/wiki/List_of_languages_by_total_number_of_speakers
        languages = {'en': 'English'}

        site_names = {'en': 'ClickHouse Blog'}

        assert len(site_names) == len(languages)

        site_dir = os.path.join(args.blog_output_dir, lang)

        plugins = ['macros']
        if args.htmlproofer:
            plugins.append('htmlproofer')

        website_url = 'https://clickhouse.com'
        site_name = site_names.get(lang, site_names['en'])
        blog_nav, post_meta = nav.build_blog_nav(lang, args)
        raw_config = dict(
            site_name=site_name,
            site_url=f'{website_url}/blog/{lang}/',
            docs_dir=os.path.join(args.blog_dir, lang),
            site_dir=site_dir,
            strict=True,
            theme=theme_cfg,
            nav=blog_nav,
            copyright='©2016–2022 ClickHouse, Inc.',
            use_directory_urls=True,
            repo_name='ClickHouse/ClickHouse',
            repo_url='https://github.com/ClickHouse/ClickHouse/',
            edit_uri=f'edit/master/website/blog/{lang}',
            markdown_extensions=mdx_clickhouse.MARKDOWN_EXTENSIONS,
            plugins=plugins,
            extra=dict(now=datetime.datetime.now().isoformat(),
                       rev=args.rev,
                       rev_short=args.rev_short,
                       rev_url=args.rev_url,
                       website_url=website_url,
                       events=args.events,
                       languages=languages,
                       includes_dir=os.path.join(os.path.dirname(__file__),
                                                 '..', '_includes'),
                       is_amp=False,
                       is_blog=True,
                       post_meta=post_meta,
                       today=datetime.date.today().isoformat()))

        cfg = config.load_config(**raw_config)
        mkdocs.commands.build.build(cfg)

        redirects.build_blog_redirects(args)

        env = util.init_jinja2_env(args)
        with open(
                os.path.join(args.website_dir, 'templates', 'blog', 'rss.xml'),
                'rb') as f:
            rss_template_string = f.read().decode('utf-8').strip()
        rss_template = env.from_string(rss_template_string)
        with open(os.path.join(args.blog_output_dir, lang, 'rss.xml'),
                  'w') as f:
            f.write(rss_template.render({'config': raw_config}))

        logging.info(f'Finished building {lang} blog')

    except exceptions.ConfigurationError as e:
        raise SystemExit('\n' + str(e))
Esempio n. 5
0
def build_for_lang(lang, args):
    logging.info(f"Building {lang} blog")

    try:
        theme_cfg = {
            "name":
            None,
            "custom_dir":
            os.path.join(os.path.dirname(__file__), "..", args.theme_dir),
            "language":
            lang,
            "direction":
            "ltr",
            "static_templates": ["404.html"],
            "extra": {
                "now": int(time.mktime(datetime.datetime.now().timetuple())
                           )  # TODO better way to avoid caching
            },
        }

        # the following list of languages is sorted according to
        # https://en.wikipedia.org/wiki/List_of_languages_by_total_number_of_speakers
        languages = {"en": "English"}

        site_names = {"en": "ClickHouse Blog"}

        assert len(site_names) == len(languages)

        site_dir = os.path.join(args.blog_output_dir, lang)

        plugins = ["macros"]
        if args.htmlproofer:
            plugins.append("htmlproofer")

        website_url = "https://clickhouse.com"
        site_name = site_names.get(lang, site_names["en"])
        blog_nav, post_meta = nav.build_blog_nav(lang, args)
        raw_config = dict(
            site_name=site_name,
            site_url=f"{website_url}/blog/{lang}/",
            docs_dir=os.path.join(args.blog_dir, lang),
            site_dir=site_dir,
            strict=True,
            theme=theme_cfg,
            nav=blog_nav,
            copyright="©2016–2022 ClickHouse, Inc.",
            use_directory_urls=True,
            repo_name="ClickHouse/ClickHouse",
            repo_url="https://github.com/ClickHouse/ClickHouse/",
            edit_uri=f"edit/master/website/blog/{lang}",
            markdown_extensions=mdx_clickhouse.MARKDOWN_EXTENSIONS,
            plugins=plugins,
            extra=dict(
                now=datetime.datetime.now().isoformat(),
                rev=args.rev,
                rev_short=args.rev_short,
                rev_url=args.rev_url,
                website_url=website_url,
                events=args.events,
                languages=languages,
                includes_dir=os.path.join(os.path.dirname(__file__), "..",
                                          "_includes"),
                is_blog=True,
                post_meta=post_meta,
                today=datetime.date.today().isoformat(),
            ),
        )

        cfg = config.load_config(**raw_config)
        mkdocs.commands.build.build(cfg)

        redirects.build_blog_redirects(args)

        env = util.init_jinja2_env(args)
        with open(
                os.path.join(args.website_dir, "templates", "blog", "rss.xml"),
                "rb") as f:
            rss_template_string = f.read().decode("utf-8").strip()
        rss_template = env.from_string(rss_template_string)
        with open(os.path.join(args.blog_output_dir, lang, "rss.xml"),
                  "w") as f:
            f.write(rss_template.render({"config": raw_config}))

        logging.info(f"Finished building {lang} blog")

    except exceptions.ConfigurationError as e:
        raise SystemExit("\n" + str(e))