Пример #1
0
def _render_log():
    """Totally tap into Towncrier internals to get an in-memory result.
    """
    config = load_config(ROOT)
    definitions = config["types"]
    fragments, fragment_filenames = find_fragments(
        pathlib.Path(config["directory"]).absolute(),
        config["sections"],
        None,
        definitions,
    )
    project_options = {
        "name": config["package"],
        "version": _read_text_version(),
        "date": datetime.date.today().isoformat(),
    }
    rendered = render_fragments(
        pathlib.Path(config["template"]).read_text(encoding="utf-8"),
        config["issue_format"],
        split_fragments(fragments, definitions),
        definitions,
        config["underlines"][1:],
        False,  # Don't add newlines to wrapped text.
        project_options,
    )
    return rendered
Пример #2
0
def get_tag_content(ctx):
    config = load_config(ctx.directory.as_posix())
    definitions = config["types"]

    (fragments, fragment_filenames) = find_fragments(
        pathlib.Path(config["directory"]).absolute(),
        config["sections"],
        None,
        definitions,
    )

    return render_fragments(
        pathlib.Path(config["template"]).read_text(encoding="utf-8"),
        config["issue_format"],
        split_fragments(fragments, definitions),
        definitions,
        config["underlines"][1:],
        False,  # don't add newlines to wrapped text
    )
Пример #3
0
def _render_log():
    """Totally tap into Towncrier internals to get an in-memory result.
    """
    config = load_config(ROOT)
    definitions = config['types']
    fragments, fragment_filenames = find_fragments(
        pathlib.Path(config['directory']).absolute(),
        config['sections'],
        None,
        definitions,
    )
    rendered = render_fragments(
        pathlib.Path(config['template']).read_text(encoding='utf-8'),
        config['issue_format'],
        split_fragments(fragments, definitions),
        definitions,
        config['underlines'][1:],
    )
    return rendered
Пример #4
0
def _render_log():
    """Totally tap into Towncrier internals to get an in-memory result."""
    config = load_config(ROOT)
    definitions = config["types"]
    fragments, fragment_filenames = find_fragments(
        pathlib.Path(config["directory"]).absolute(),
        config["sections"],
        None,
        definitions,
    )
    rendered = render_fragments(
        pathlib.Path(config["template"]).read_text(encoding="utf-8"),
        config["issue_format"],
        split_fragments(fragments, definitions),
        definitions,
        config["underlines"][1:],
        False,  # Don't add newlines to wrapped text.
        {
            "name": "requirementslib",
            "version": "1.6.7",
            "date": "2022-7-7",
        },  # towncrier==19.9.0
    )
    return rendered
Пример #5
0
def generate_changelog_for_docs(directory, skip_if_empty=True):
    """
    The main entry point.
    """
    directory = os.path.abspath(directory)
    config = load_config(directory)
    if config is None:
        raise ValueError(
            f"No vaild towncrier configuration could be found in the directory {directory}"
        )

    curdir = os.getcwd()
    os.chdir(directory)

    print("Loading template...")
    if config["template"] is None:
        template = pkg_resources.resource_string(
            "towncrier", "templates/template.rst").decode("utf8")
    else:
        with open(config["template"], "rb") as tmpl:
            template = tmpl.read().decode("utf8")

    print("Finding news fragments...")

    definitions = config["types"]

    if config.get("directory"):
        base_directory = os.path.abspath(config["directory"])
        fragment_directory = None
    else:
        base_directory = os.path.abspath(
            os.path.join(directory, config["package_dir"], config["package"]))
        fragment_directory = "newsfragments"

    fragments, fragment_filenames = find_fragments(base_directory,
                                                   config["sections"],
                                                   fragment_directory,
                                                   definitions)

    if skip_if_empty and not fragment_filenames:
        return ""

    print("Rendering news fragments...")
    fragments = split_fragments(fragments, definitions)
    rendered = render_fragments(
        # The 0th underline is used for the top line
        template,
        config["issue_format"],
        fragments,
        definitions,
        config["underlines"][1:],
        config["wrap"],
    )

    project_version = get_version(
        os.path.join(directory, config["package_dir"]), config["package"])

    package = config.get("package")
    if package:
        project_name = get_project_name(
            os.path.abspath(os.path.join(directory, config["package_dir"])),
            package)
    else:
        # Can't determine a project_name, but maybe it is not needed.
        project_name = ""

    project_date = _get_date()

    top_line = config["title_format"].format(name=project_name,
                                             version=project_version,
                                             project_date=project_date)
    top_line += u"\n" + (config["underlines"][0] * len(top_line)) + u"\n"

    os.chdir(curdir)
    return top_line + rendered