예제 #1
0
def from_vcs(
    vcs: Vcs,
    pattern: str,
    metadata: Optional[bool],
    dirty: bool,
    format: Optional[str],
    style: Optional[Style],
    latest_tag: bool,
    tag_dir: str,
    debug: bool,
    bump: bool,
    tagged_metadata: bool,
) -> None:
    version = Version.from_vcs(vcs, pattern, latest_tag, tag_dir)
    print(
        version.serialize(metadata,
                          dirty,
                          format,
                          style,
                          bump,
                          tagged_metadata=tagged_metadata))
    if debug:
        print("# Matched tag: {}".format(version._matched_tag),
              file=sys.stderr)
        print("# Newer unmatched tags: {}".format(
            version._newer_unmatched_tags),
              file=sys.stderr)
예제 #2
0
def _get_version(config: Mapping) -> Tuple[Version, str]:
    vcs = Vcs(config["vcs"])
    style = config["style"]
    if style is not None:
        style = Style(style)

    version = Version.from_vcs(vcs, config["pattern"], config["latest-tag"],
                               config["subversion"]["tag-dir"])

    if config["format-jinja"]:
        base = version.base
        revision = version.revision
        if config["bump"]:
            if version.stage is None:
                base = bump_version(version.base)
            else:
                if version.revision is None:
                    revision = 2
                else:
                    revision = version.revision + 1

        default_context = {
            "base": base,
            "version": version,
            "stage": version.stage,
            "revision": revision,
            "distance": version.distance,
            "commit": version.commit,
            "dirty": version.dirty,
            "env": os.environ,
            "bump_version": bump_version,
            "tagged_metadata": version.tagged_metadata,
            "serialize_pep440": serialize_pep440,
            "serialize_pvp": serialize_pvp,
            "serialize_semver": serialize_semver,
        }
        custom_context = {}  # type: dict
        for entry in config["format-jinja-imports"]:
            if "module" in entry:
                module = import_module(entry["module"])
                if "item" in entry:
                    custom_context[entry["item"]] = getattr(
                        module, entry["item"])
                else:
                    custom_context[entry["module"]] = module
        serialized = jinja2.Template(
            config["format-jinja"]).render(**default_context, **custom_context)
        if style is not None:
            check_version(serialized, style)
    else:
        serialized = version.serialize(
            metadata=config["metadata"],
            dirty=config["dirty"],
            format=config["format"],
            style=style,
            bump=config["bump"],
            tagged_metadata=config["tagged-metadata"],
        )

    return (version, serialized)
예제 #3
0
def from_vcs(
    vcs: Vcs,
    pattern: str,
    metadata: Optional[bool],
    dirty: bool,
    format: Optional[str],
    style: Optional[Style],
    latest_tag: bool,
    tag_dir: str,
) -> None:
    version = Version.from_vcs(vcs, pattern, latest_tag, tag_dir)
    print(version.serialize(metadata, dirty, format, style))
예제 #4
0
def _get_version(config: Mapping, pyproject_path: Path) -> Tuple[Version, str]:
    if _state.version:
        return _state.version

    pyproject = tomlkit.parse(pyproject_path.read_text())
    if not _state.original_version:
        _state.original_version = pyproject["tool"]["poetry"]["version"]

    vcs = Vcs(config["vcs"])
    style = config["style"]
    if style is not None:
        style = Style(style)

    version = Version.from_vcs(vcs, config["pattern"], config["latest-tag"],
                               config["subversion"]["tag-dir"])
    serialized = version.serialize(config["metadata"], config["dirty"],
                                   config["format"], style)

    pyproject["tool"]["poetry"]["version"] = serialized
    pyproject_path.write_text(tomlkit.dumps(pyproject))
    _state.version = (version, serialized)
    return (version, serialized)
예제 #5
0
def _get_version(config: Mapping, pyproject_path: Path) -> Tuple[Version, str]:
    if _state.version:
        return _state.version

    pyproject = tomlkit.parse(pyproject_path.read_text(encoding='utf8'))
    if not _state.original_version:
        _state.original_version = pyproject["tool"]["poetry"]["version"]

    vcs = Vcs(config["vcs"])
    style = config["style"]
    if style is not None:
        style = Style(style)

    version = Version.from_vcs(vcs, config["pattern"], config["latest-tag"],
                               config["subversion"]["tag-dir"])
    if config["format-jinja"]:
        serialized = jinja2.Template(config["format-jinja"]).render(
            base=version.base,
            stage=version.stage,
            revision=version.revision,
            distance=version.distance,
            commit=version.commit,
            dirty=version.dirty,
            env=os.environ,
            bump_version=bump_version,
            serialize_pep440=serialize_pep440,
            serialize_pvp=serialize_pvp,
            serialize_semver=serialize_semver,
        )
        if style is not None:
            check_version(serialized, style)
    else:
        serialized = version.serialize(config["metadata"], config["dirty"],
                                       config["format"], style)

    pyproject["tool"]["poetry"]["version"] = serialized
    pyproject_path.write_text(tomlkit.dumps(pyproject))
    _state.version = (version, serialized)
    return (version, serialized)
예제 #6
0
def test__version__from_any_vcs(tmp_path) -> None:
    with chdir(tmp_path):
        with pytest.raises(RuntimeError):
            Version.from_any_vcs()
        with pytest.raises(RuntimeError):
            Version.from_vcs(Vcs.Any)