Exemple #1
0
def assemble():
    #repo = git.Repo(".")
    #commit = repo.head.commit

    definitions = {}
    doc_dir = Path("docs")
    for f in doc_dir.rglob("*.yaml"):
        if f.name in SKIP_FILES:
            continue
        component = f.parent.name
        if component not in definitions:
            definitions[component] = {}
        definitions[component].update(get_yaml(f))

    write_yaml(definitions, "tests/tmp.bundle.yaml")

    r = OpenapiResolver(definitions, str(f))
    resolved = r.resolve()
    write_yaml(resolved, "tmp.bundle.resolverd.yaml")

    # Prepare metadata output.
    info = get_yaml(Path("info.yaml"))
    if "info" not in info:
        raise ValueError("Error: info.yaml does not contain 'info' section.")

    # if not repo.head.is_detached:
    #     version = repo.active_branch.name
    # else:
    #     version_tag = next(
    #         (tag for tag in repo.tags if tag.commit == repo.head.commit), None
    #     )
    #     if not version_tag:
    #         raise NotImplementedError(
    #             "The current state should be an active_branch or a tag."
    #         )
    #     version = version_tag.name
    #
    # info["info"].update(
    #     {
    #         "commit": str(commit),
    #         "date": commit.committed_date,
    #         "version": version,
    #     }
    # )

    # committed_datetime = datetime.fromtimestamp(
    #     commit.committed_date
    # ).isoformat()

    p = Path("docs/definitions.yaml")
    with p.open("w") as fh:
        #        fh.write(f"#  {committed_datetime}\n")
        fh.write(OpenapiResolver.yaml_dump_pretty(info))
        fh.write(
            OpenapiResolver.yaml_dump_pretty(resolved).replace(
                "#/components/", "#/"))
def show_component(url):
    U = urlparse(url)
    fragment = U.fragment.strip('/').split('/')
    ret = yaml.safe_load(get(url).content)
    for k in fragment:
        ret = ret[k]
    return OpenapiResolver.yaml_dump_pretty(ret)
Exemple #3
0
def write_yaml(src, dst):
    p = Path(dst)
    p.write_text(OpenapiResolver.yaml_dump_pretty(src))