| |
@@ -1,9 +1,21 @@
|
| |
# -*- coding: utf-8 -*-
|
| |
|
| |
+ """
|
| |
+ The `minor_version` argument was deprecated in 0.1.27 and should be removed in 0.2.0.
|
| |
+ """
|
| |
+
|
| |
import os
|
| |
+ import warnings
|
| |
+
|
| |
import productmd
|
| |
|
| |
|
| |
+ class VersionType(object):
|
| |
+ MAJOR = 0
|
| |
+ MINOR = 1
|
| |
+ FULL = 2
|
| |
+
|
| |
+
|
| |
class ComposeSymlink(object):
|
| |
def __init__(self, compose_path):
|
| |
self.compose = productmd.compose.Compose(compose_path)
|
| |
@@ -20,29 +32,61 @@
|
| |
os.symlink(os.path.basename(self.path), temp)
|
| |
os.rename(temp, symlink)
|
| |
|
| |
- def get_latest_link_name(self, minor_version=False):
|
| |
+ def get_latest_link_name(self, minor_version=False, version_type=VersionType.MAJOR):
|
| |
"""Get name of latest- symlink for current compose."""
|
| |
- fmt = 'latest-{0.release.short}-{0.release.major_version}'
|
| |
+ if minor_version is not None:
|
| |
+ _deprecated_arg("minor_version", "version_type")
|
| |
if minor_version:
|
| |
- fmt += '.{0.release.minor_version}'
|
| |
+ version_type = VersionType.MINOR
|
| |
+
|
| |
+ formats = {
|
| |
+ VersionType.MAJOR: "{0.release.major_version}",
|
| |
+ VersionType.MINOR: "{0.release.major_version}.{0.release.minor_version}",
|
| |
+ VersionType.FULL: "{0.release.version}",
|
| |
+ }
|
| |
+ version = formats[version_type].format(self.compose.info)
|
| |
+
|
| |
+ fmt = "latest-{0.release.short}-{1}"
|
| |
if self.compose.info.release.is_layered:
|
| |
fmt += '-{0.base_product.short}-{0.base_product.version}'
|
| |
- return fmt.format(self.compose.info)
|
| |
+ return fmt.format(self.compose.info, version)
|
| |
|
| |
- def print_latest_link(self, minor_version=False):
|
| |
- """Print a latest- symlink with optional minor version."""
|
| |
- print(self.get_latest_link_name(minor_version=minor_version))
|
| |
+ def print_latest_link(self, minor_version=None, version_type=VersionType.MAJOR):
|
| |
+ """Print a latest- symlink with configured version pattern."""
|
| |
+ if minor_version is not None:
|
| |
+ _deprecated_arg("minor_version", "version_type")
|
| |
+ if minor_version:
|
| |
+ version_type = VersionType.MINOR
|
| |
+ print(self.get_latest_link_name(version_type=version_type))
|
| |
|
| |
- def create_latest_link(self, minor_version=False):
|
| |
- """Create a latest- symlink with optional minor version."""
|
| |
- self._link(self.get_latest_link_name(minor_version=minor_version))
|
| |
+ def create_latest_link(self, minor_version=None, version_type=VersionType.MAJOR):
|
| |
+ """Create a latest- symlink with configured version pattern."""
|
| |
+ if minor_version is not None:
|
| |
+ _deprecated_arg("minor_version", "version_type")
|
| |
+ if minor_version:
|
| |
+ version_type = VersionType.MINOR
|
| |
+ self._link(self.get_latest_link_name(version_type=version_type))
|
| |
|
| |
|
| |
- def print_latest_link(compose_path, minor_version=False):
|
| |
+ def print_latest_link(compose_path, minor_version=None, version_type=VersionType.MAJOR):
|
| |
"""Convenience function for easy printing of latest symlink."""
|
| |
- ComposeSymlink(compose_path).print_latest_link(minor_version)
|
| |
+ if minor_version is not None:
|
| |
+ _deprecated_arg("minor_version", "version_type")
|
| |
+ if minor_version:
|
| |
+ version_type = VersionType.MINOR
|
| |
+ ComposeSymlink(compose_path).print_latest_link(version_type=version_type)
|
| |
|
| |
|
| |
- def create_latest_link(compose_path, minor_version=False):
|
| |
+ def create_latest_link(compose_path, minor_version=None, version_type=VersionType.MAJOR):
|
| |
"""Convenience function for easy creation of latest symlink."""
|
| |
- ComposeSymlink(compose_path).create_latest_link(minor_version)
|
| |
+ if minor_version is not None:
|
| |
+ _deprecated_arg("minor_version", "version_type")
|
| |
+ if minor_version:
|
| |
+ version_type = VersionType.MINOR
|
| |
+ ComposeSymlink(compose_path).create_latest_link(version_type=version_type)
|
| |
+
|
| |
+
|
| |
+ def _deprecated_arg(arg, replace):
|
| |
+ warnings.warn(
|
| |
+ "%r argument is deprecated, use %r instead" % (arg, replace), DeprecationWarning
|
| |
+ )
|
| |
This should be backwards compatible both on CLI and Python API level, but emit deprecation warning.