add week pattern validation

This commit is contained in:
Manuel Barkhau 2020-10-02 23:02:02 +00:00
parent ec4d051e7c
commit fb2f3f11fd
2 changed files with 26 additions and 0 deletions

View file

@ -269,6 +269,8 @@ def _parse_config(raw_cfg: RawConfig) -> Config:
f"Invalid character(s) '{invalid_chars.group(1)}'"
f" in pycalver.version_pattern = {raw_cfg['version_pattern']}"
)
if not v2version.is_valid_week_pattern(version_pattern):
raise ValueError(f"Invalid week number pattern: {version_pattern}")
# TODO (mb 2020-09-18): Validate Pattern
# detect YY with WW or UU -> suggest GG with VV

View file

@ -575,6 +575,27 @@ def _incr_numeric(
return vinfo
def is_valid_week_pattern(raw_pattern) -> bool:
has_yy_part = any(part in raw_pattern for part in ["YYYY", "YY", "0Y"])
has_ww_part = any(part in raw_pattern for part in ["WW" , "0W", "UU", "0U"])
has_gg_part = any(part in raw_pattern for part in ["GGGG", "GG", "0G"])
has_vv_part = any(part in raw_pattern for part in ["VV" , "0V"])
if not ((has_yy_part or has_gg_part) and (has_ww_part or has_vv_part)):
return True
elif has_yy_part and has_vv_part:
alt1 = raw_pattern.replace("V", "W")
alt2 = raw_pattern.replace("Y", "G")
logger.error(f"Invalid pattern: '{raw_pattern}'. Maybe try {alt1} or {alt2}")
return False
elif has_gg_part and has_ww_part:
alt1 = raw_pattern.replace("W", "V").replace("U", "V")
alt2 = raw_pattern.replace("G", "Y")
logger.error(f"Invalid pattern: '{raw_pattern}'. Maybe try {alt1} or {alt2}")
return False
else:
return True
def incr(
old_version: str,
raw_pattern: str = "vYYYY0M.BUILD[-RELEASE[NUM]]",
@ -591,6 +612,9 @@ def incr(
'old_version' is assumed to be a string that matches 'raw_pattern'
"""
if not is_valid_week_pattern(raw_pattern):
return None
try:
old_vinfo = parse_version_info(old_version, raw_pattern)
except version.PatternError as ex: