64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
# -*- coding: utf-8 -*- #
|
|
# Copyright 2017 Google LLC. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
"""GCloud Command/Group/Flag Deprecation Utilities."""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import unicode_literals
|
|
|
|
from googlecloudsdk.calliope import base
|
|
|
|
_WARNING_MSG = 'This command is deprecated and will be removed in version {0}.'
|
|
|
|
_REMOVED_MSG = 'This command has been removed as of version {0}.'
|
|
|
|
_COMMAND_ALT_MSG = ' Use `{0}` instead.'
|
|
|
|
|
|
def DeprecateCommandAtVersion(remove_version,
|
|
remove=False,
|
|
alt_command=None): # pylint: disable=common_typos_disable
|
|
"""Decorator that marks a GCloud command as deprecated.
|
|
|
|
Args:
|
|
remove_version: string, The GCloud sdk version where this command will be
|
|
marked as removed.
|
|
|
|
remove: boolean, True if the command should be removed in underlying
|
|
base.Deprecate decorator, False if it should only print a warning
|
|
|
|
alt_command: string, optional alternative command to use in place of
|
|
deprecated command
|
|
|
|
Raises:
|
|
ValueError: If remove version is missing
|
|
|
|
Returns:
|
|
A modified version of the provided class.
|
|
"""
|
|
if not remove_version:
|
|
raise ValueError('Valid remove version is required')
|
|
|
|
# Warning and Error messages for Calliope
|
|
warn = _WARNING_MSG.format(remove_version)
|
|
error = _REMOVED_MSG.format(remove_version)
|
|
|
|
if alt_command:
|
|
warn += _COMMAND_ALT_MSG.format(alt_command)
|
|
error += _COMMAND_ALT_MSG.format(alt_command)
|
|
|
|
return base.Deprecate(is_removed=remove, warning=warn, error=error)
|