bitbake: utils: add is_semver function

This function checks if a string is a semantic version:
    https://semver.org/spec/v2.0.0.html

The npm fetcher needs this function to validate its version parameter.

(Bitbake rev: 61ac4e825fa7afbb76282030586abc9ee4ac215c)

Signed-off-by: Jean-Marie LEMETAYER <jean-marie.lemetayer@savoirfairelinux.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jean-Marie LEMETAYER 2020-01-24 18:08:04 +01:00 committed by Richard Purdie
parent bdcd68f092
commit bd184ea6ff

View File

@ -1611,3 +1611,29 @@ class LogCatcher(logging.Handler):
self.messages.append(bb.build.logformatter.format(record))
def contains(self, message):
return (message in self.messages)
def is_semver(version):
"""
Is the version string following the semver semantic?
https://semver.org/spec/v2.0.0.html
"""
regex = re.compile(
r"""
^
(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)
(?:-(
(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)
(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*
))?
(?:\+(
[0-9a-zA-Z-]+
(?:\.[0-9a-zA-Z-]+)*
))?
$
""", re.VERBOSE)
if regex.match(version) is None:
return False
return True