Chromium Code Reviews| Index: appengine/swarming/cipd.py |
| diff --git a/appengine/swarming/cipd.py b/appengine/swarming/cipd.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..bca3eb09786e375c7d9fab92d5765412e38022a9 |
| --- /dev/null |
| +++ b/appengine/swarming/cipd.py |
| @@ -0,0 +1,36 @@ |
| +#!/usr/bin/env python |
|
M-A Ruel
2016/04/25 19:09:45
THis file is not executable.
nodir
2016/04/25 20:27:15
Done.
|
| +# Copyright 2016 The LUCI Authors. All rights reserved. |
| +# Use of this source code is governed by the Apache v2.0 license that can be |
| +# found in the LICENSE file. |
| + |
| +"""CIPD-specific code is concentrated here.""" |
| + |
| +import re |
| + |
| +# Regular expressions below are copied from |
| +# https://chromium.googlesource.com/infra/infra/+/468bb43/appengine/chrome_infra_packages/cipd/impl.py |
| +# https://chromium.googlesource.com/infra/infra/+/468bb43/appengine/chrome_infra_packages/cas/impl.py |
| + |
| +PACKAGE_NAME_RE = re.compile(r'^([a-z0-9_\-]+/)*[a-z0-9_\-]+$') |
| +INSTANCE_ID_RE = re.compile(r'^[0-9a-f]{40}$') |
| +TAG_KEY_RE = re.compile(r'^[a-z0-9_\-]{1,400}$') |
| +REF_RE = re.compile(r'^[a-z0-9_\-]{1,100}$') |
| + |
| + |
| +def is_valid_package_name(package_name): |
| + """Returns True if |package_name| is a valid CIPD package name.""" |
| + return bool(PACKAGE_NAME_RE.match(package_name)) |
| + |
| + |
| +def is_valid_version(version): |
| + """Returns True if |version| is a valid CIPD package version.""" |
| + return bool( |
| + INSTANCE_ID_RE.match(version) or |
| + TAG_KEY_RE.match(version) or |
| + REF_RE.match(version) |
| + ) |
| + |
| + |
| +def is_pinned_version(version): |
| + """Returns True if |version| is pinned""" |
| + return bool(INSTANCE_ID_RE.match(version) or TAG_KEY_RE.match(version)) |