From b7af1bbe55bd1c6f79ee281c178b088b76ffe1d7 Mon Sep 17 00:00:00 2001 From: Manuel Barkhau Date: Thu, 18 Mar 2021 19:41:56 +0000 Subject: [PATCH] fix #157 @gh: better error messages --- src/bumpver/cli.py | 11 +++-------- src/bumpver/config.py | 16 ++++++++++++++++ src/bumpver/v2patterns.py | 3 --- src/bumpver/v2version.py | 1 + 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/bumpver/cli.py b/src/bumpver/cli.py index 2c4a816..eaa82c4 100755 --- a/src/bumpver/cli.py +++ b/src/bumpver/cli.py @@ -125,9 +125,6 @@ def _validate_flags( def _log_no_change(subcmd: str, version_pattern: str, old_version: str) -> None: - msg = f"Invalid version '{old_version}' and/or pattern '{version_pattern}'." - logger.error(msg) - is_semver = "{semver}" in version_pattern or ( "MAJOR" in version_pattern and "MAJOR" in version_pattern and "PATCH" in version_pattern ) @@ -541,7 +538,7 @@ def incr_dispatch( logger.info("regex = " + regexfmt.pyexpr_regex(pattern.regexp.pattern)) if has_v1_part: - new_version = v1version.incr( + return v1version.incr( old_version, raw_pattern=raw_pattern, major=major, @@ -553,7 +550,7 @@ def incr_dispatch( date=date, ) else: - new_version = v2version.incr( + return v2version.incr( old_version, raw_pattern=raw_pattern, major=major, @@ -565,8 +562,6 @@ def incr_dispatch( date=date, ) - return new_version - def _update( cfg : config.Config, @@ -715,7 +710,7 @@ def update( _, cfg = config.init(project_path=".") if cfg is None: - logger.error("Could not parse configuration. Perhaps try 'bumpver init'.") + logger.error("Could not parse configuration.") sys.exit(1) cfg = _update_cfg_from_vcs(cfg, fetch) diff --git a/src/bumpver/config.py b/src/bumpver/config.py index d4789c4..7640ce7 100644 --- a/src/bumpver/config.py +++ b/src/bumpver/config.py @@ -211,6 +211,7 @@ def _parse_cfg(cfg_buffer: typ.IO[str]) -> RawConfig: elif cfg_parser.has_section("bumpver"): raw_cfg = dict(cfg_parser.items("bumpver")) else: + logger.warning("Perhaps try 'bumpver init'.") raise ValueError("Missing [bumpver] section.") for option, default_val in BOOL_OPTIONS.items(): @@ -286,6 +287,21 @@ def _compile_v2_file_patterns(raw_cfg: RawConfig) -> typ.Iterable[FilePatternsIt raw_patterns_by_file: RawPatternsByFile = raw_cfg['file_patterns'] for filepath, raw_patterns in _iter_glob_expanded_file_patterns(raw_patterns_by_file): + for raw_pattern in raw_patterns: + if raw_pattern.startswith("["): + errmsg = ( + f"Invalid pattern {raw_pattern} for {filepath}. " + + "Character not valid in this position '[' " + ) + raise ValueError(errmsg) + + # provoke error for specifc pattern + try: + v2patterns.compile_pattern(version_pattern, raw_pattern) + except re.error: + logger.warning(f"Invalid patterns for {filepath} ({raw_pattern})") + raise + compiled_patterns = v2patterns.compile_patterns(version_pattern, raw_patterns) yield filepath, compiled_patterns diff --git a/src/bumpver/v2patterns.py b/src/bumpver/v2patterns.py index e8857ea..e9a780e 100644 --- a/src/bumpver/v2patterns.py +++ b/src/bumpver/v2patterns.py @@ -31,14 +31,11 @@ import re import typing as typ -import logging from . import utils from .patterns import RE_PATTERN_ESCAPES from .patterns import Pattern -logger = logging.getLogger("bumpver.v2patterns") - # NOTE (mb 2020-09-17): For patterns with different options '(AAA|BB|C)', the # patterns with more digits should be first/left of those with fewer digits: # diff --git a/src/bumpver/v2version.py b/src/bumpver/v2version.py index 85366b5..e591117 100644 --- a/src/bumpver/v2version.py +++ b/src/bumpver/v2version.py @@ -743,6 +743,7 @@ def incr( try: old_vinfo = parse_version_info(old_version, raw_pattern) except version.PatternError as ex: + logger.error(f"Invalid version '{old_version}' and/or pattern '{raw_pattern}'") logger.error(str(ex)) return None