2019-03-28 23:22:15 +01:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
# This file is part of the pycalver project
|
2020-09-06 20:20:36 +00:00
|
|
|
# https://github.com/mbarkhau/pycalver
|
2019-03-28 23:22:15 +01:00
|
|
|
#
|
2020-09-06 20:20:36 +00:00
|
|
|
# Copyright (c) 2018-2020 Manuel Barkhau (mbarkhau@gmail.com) - MIT License
|
2019-03-28 23:22:15 +01:00
|
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
|
"""
|
|
|
|
|
CLI module for PyCalVer.
|
|
|
|
|
|
|
|
|
|
Provided subcommands: show, test, init, bump
|
|
|
|
|
"""
|
|
|
|
|
import typing as typ
|
2020-05-25 07:46:30 +00:00
|
|
|
import logging
|
2019-03-28 23:22:15 +01:00
|
|
|
|
2020-09-06 21:15:27 +00:00
|
|
|
import pycalver.rewrite as v1rewrite
|
|
|
|
|
import pycalver.version as v1version
|
|
|
|
|
from pycalver import config
|
2019-03-28 23:22:15 +01:00
|
|
|
|
2020-07-19 13:18:42 +00:00
|
|
|
logger = logging.getLogger("pycalver.cli")
|
2019-03-28 23:22:15 +01:00
|
|
|
|
|
|
|
|
|
2020-09-06 21:15:27 +00:00
|
|
|
def update_cfg_from_vcs(cfg: config.Config, all_tags: typ.List[str]) -> config.Config:
|
|
|
|
|
version_tags = [tag for tag in all_tags if v1version.is_valid(tag, cfg.version_pattern)]
|
|
|
|
|
if not version_tags:
|
|
|
|
|
logger.debug("no vcs tags found")
|
|
|
|
|
return cfg
|
|
|
|
|
|
|
|
|
|
version_tags.sort(reverse=True)
|
|
|
|
|
logger.debug(f"found {len(version_tags)} tags: {version_tags[:2]}")
|
|
|
|
|
latest_version_tag = version_tags[0]
|
|
|
|
|
latest_version_pep440 = v1version.to_pep440(latest_version_tag)
|
|
|
|
|
if latest_version_tag <= cfg.current_version:
|
|
|
|
|
return cfg
|
|
|
|
|
|
|
|
|
|
logger.info(f"Working dir version : {cfg.current_version}")
|
|
|
|
|
logger.info(f"Latest version from VCS tag: {latest_version_tag}")
|
|
|
|
|
return cfg._replace(
|
|
|
|
|
current_version=latest_version_tag,
|
|
|
|
|
pep440_version=latest_version_pep440,
|
2019-03-28 23:22:15 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2020-09-06 21:15:27 +00:00
|
|
|
def rewrite(
|
|
|
|
|
cfg : config.Config,
|
|
|
|
|
new_version: str,
|
2020-07-19 13:18:42 +00:00
|
|
|
) -> None:
|
2020-09-06 21:15:27 +00:00
|
|
|
new_vinfo = v1version.parse_version_info(new_version, cfg.version_pattern)
|
|
|
|
|
v1rewrite.rewrite(cfg.file_patterns, new_vinfo)
|
2019-03-28 23:22:15 +01:00
|
|
|
|
|
|
|
|
|
2020-09-06 21:15:27 +00:00
|
|
|
def get_diff(cfg: config.Config, new_version: str) -> str:
|
|
|
|
|
new_vinfo = v1version.parse_version_info(new_version, cfg.version_pattern)
|
|
|
|
|
return v1rewrite.diff(new_vinfo, cfg.file_patterns)
|