mirror of
https://github.com/TECHNOFAB11/bumpver.git
synced 2025-12-12 14:30:09 +01:00
add week pattern validation
This commit is contained in:
parent
ec4d051e7c
commit
fb2f3f11fd
2 changed files with 26 additions and 0 deletions
|
|
@ -269,6 +269,8 @@ def _parse_config(raw_cfg: RawConfig) -> Config:
|
||||||
f"Invalid character(s) '{invalid_chars.group(1)}'"
|
f"Invalid character(s) '{invalid_chars.group(1)}'"
|
||||||
f" in pycalver.version_pattern = {raw_cfg['version_pattern']}"
|
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
|
# TODO (mb 2020-09-18): Validate Pattern
|
||||||
# detect YY with WW or UU -> suggest GG with VV
|
# detect YY with WW or UU -> suggest GG with VV
|
||||||
|
|
|
||||||
|
|
@ -575,6 +575,27 @@ def _incr_numeric(
|
||||||
return vinfo
|
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(
|
def incr(
|
||||||
old_version: str,
|
old_version: str,
|
||||||
raw_pattern: str = "vYYYY0M.BUILD[-RELEASE[NUM]]",
|
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'
|
'old_version' is assumed to be a string that matches 'raw_pattern'
|
||||||
"""
|
"""
|
||||||
|
if not is_valid_week_pattern(raw_pattern):
|
||||||
|
return None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
old_vinfo = parse_version_info(old_version, raw_pattern)
|
old_vinfo = parse_version_info(old_version, raw_pattern)
|
||||||
except version.PatternError as ex:
|
except version.PatternError as ex:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue