summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2018-11-01 15:23:21 -0700
committerJoffrey F <joffrey@docker.com>2018-11-28 11:56:08 -0800
commit2e4a45358ebf827ca18b06e5a5193fd2d40b35c4 (patch)
tree1f516f31a0a78c6a1a17b038d223f78d1b02ada4
parent26daa6194a934d11bc92490582e722e618ab9853 (diff)
downloaddocker-py-2e4a45358ebf827ca18b06e5a5193fd2d40b35c4.tar.gz
Update version detection script for CI
Signed-off-by: Joffrey F <joffrey@docker.com>
-rw-r--r--scripts/versions.py39
1 files changed, 24 insertions, 15 deletions
diff --git a/scripts/versions.py b/scripts/versions.py
index 77aaf4f..7212195 100644
--- a/scripts/versions.py
+++ b/scripts/versions.py
@@ -11,23 +11,24 @@ categories = [
'test'
]
+STAGES = ['tp', 'beta', 'rc']
-class Version(namedtuple('_Version', 'major minor patch rc edition')):
+
+class Version(namedtuple('_Version', 'major minor patch stage edition')):
@classmethod
def parse(cls, version):
edition = None
version = version.lstrip('v')
- version, _, rc = version.partition('-')
- if rc:
- if 'rc' not in rc:
- edition = rc
- rc = None
- elif '-' in rc:
- edition, rc = rc.split('-')
-
+ version, _, stage = version.partition('-')
+ if stage:
+ if not any(marker in stage for marker in STAGES):
+ edition = stage
+ stage = None
+ elif '-' in stage:
+ edition, stage = stage.split('-')
major, minor, patch = version.split('.', 3)
- return cls(major, minor, patch, rc, edition)
+ return cls(major, minor, patch, stage, edition)
@property
def major_minor(self):
@@ -38,14 +39,22 @@ class Version(namedtuple('_Version', 'major minor patch rc edition')):
"""Return a representation that allows this object to be sorted
correctly with the default comparator.
"""
- # rc releases should appear before official releases
- rc = (0, self.rc) if self.rc else (1, )
- return (int(self.major), int(self.minor), int(self.patch)) + rc
+ # non-GA releases should appear before GA releases
+ # Order: tp -> beta -> rc -> GA
+ if self.stage:
+ for st in STAGES:
+ if st in self.stage:
+ stage = (STAGES.index(st), self.stage)
+ break
+ else:
+ stage = (len(STAGES),)
+
+ return (int(self.major), int(self.minor), int(self.patch)) + stage
def __str__(self):
- rc = '-{}'.format(self.rc) if self.rc else ''
+ stage = '-{}'.format(self.stage) if self.stage else ''
edition = '-{}'.format(self.edition) if self.edition else ''
- return '.'.join(map(str, self[:3])) + edition + rc
+ return '.'.join(map(str, self[:3])) + edition + stage
def main():