Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions knack/deprecation.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ def _default_get_message(self):
self.redirect = redirect
self.hide = hide
self.expiration = expiration
self._cli_version = cli_ctx.get_cli_version()

super(Deprecated, self).__init__(
cli_ctx=cli_ctx,
Expand All @@ -103,17 +104,15 @@ def _version_less_than_or_equal_to(self, v1, v2):

def expired(self):
if self.expiration:
cli_version = self.cli_ctx.get_cli_version()
return self._version_less_than_or_equal_to(self.expiration, cli_version)
return self._version_less_than_or_equal_to(self.expiration, self._cli_version)
return False

def hidden(self):
hidden = False
if isinstance(self.hide, bool):
hidden = self.hide
elif isinstance(self.hide, STRING_TYPES):
cli_version = self.cli_ctx.get_cli_version()
hidden = self._version_less_than_or_equal_to(self.hide, cli_version)
hidden = self._version_less_than_or_equal_to(self.hide, self._cli_version)
return hidden

def show_in_help(self):
Expand Down
6 changes: 3 additions & 3 deletions knack/help.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ def __init__(self, help_ctx, delimiters): # pylint: disable=too-many-statements
help_ctx.cli_ctx.invocation.commands_loader.command_table else 'command group'
del deprecate_kwargs['_get_tag']
del deprecate_kwargs['_get_message']
self.deprecate_info = ImplicitDeprecated(**deprecate_kwargs)
self.deprecate_info = ImplicitDeprecated(cli_ctx=help_ctx.cli_ctx, **deprecate_kwargs)

# resolve preview info
direct_preview_info = resolve_preview_info(help_ctx.cli_ctx, delimiters)
Expand All @@ -173,7 +173,7 @@ def __init__(self, help_ctx, delimiters): # pylint: disable=too-many-statements
preview_kwargs['object_type'] = 'command'
else:
preview_kwargs['object_type'] = 'command group'
self.preview_info = ImplicitPreviewItem(**preview_kwargs)
self.preview_info = ImplicitPreviewItem(cli_ctx=help_ctx.cli_ctx, **preview_kwargs)

# resolve experimental info
direct_experimental_info = resolve_experimental_info(help_ctx.cli_ctx, delimiters)
Expand All @@ -193,7 +193,7 @@ def __init__(self, help_ctx, delimiters): # pylint: disable=too-many-statements
experimental_kwargs['object_type'] = 'command'
else:
experimental_kwargs['object_type'] = 'command group'
self.experimental_info = ImplicitExperimentalItem(**experimental_kwargs)
self.experimental_info = ImplicitExperimentalItem(cli_ctx=help_ctx.cli_ctx, **experimental_kwargs)

def load(self, options):
description = getattr(options, 'description', None)
Expand Down
6 changes: 3 additions & 3 deletions knack/invocation.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ def execute(self, args):
deprecate_kwargs['object_type'] = 'command'
del deprecate_kwargs['_get_tag']
del deprecate_kwargs['_get_message']
deprecations.append(ImplicitDeprecated(**deprecate_kwargs))
deprecations.append(ImplicitDeprecated(cli_ctx=self.cli_ctx, **deprecate_kwargs))

# search for implicit preview
path_comps = cmd.name.split()[:-1]
Expand All @@ -200,7 +200,7 @@ def execute(self, args):
if implicit_preview_info:
preview_kwargs = implicit_preview_info.__dict__.copy()
preview_kwargs['object_type'] = 'command'
previews.append(ImplicitPreviewItem(**preview_kwargs))
previews.append(ImplicitPreviewItem(cli_ctx=self.cli_ctx, **preview_kwargs))

# search for implicit experimental
path_comps = cmd.name.split()[:-1]
Expand All @@ -212,7 +212,7 @@ def execute(self, args):
if implicit_experimental_info:
experimental_kwargs = implicit_experimental_info.__dict__.copy()
experimental_kwargs['object_type'] = 'command'
experimentals.append(ImplicitExperimentalItem(**experimental_kwargs))
experimentals.append(ImplicitExperimentalItem(cli_ctx=self.cli_ctx, **experimental_kwargs))

if not self.cli_ctx.only_show_errors:
for d in deprecations:
Expand Down
22 changes: 3 additions & 19 deletions knack/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,29 +59,13 @@ class StatusTag(object):

# pylint: disable=unused-argument
def __init__(self, cli_ctx, object_type, target, tag_func, message_func, color, **kwargs):
self.cli_ctx = cli_ctx
self.object_type = object_type
self.target = target
self._color = color
self._enable_color = cli_ctx.enable_color
self._get_tag = tag_func
self._get_message = message_func

def __deepcopy__(self, memo):
import copy

cls = self.__class__
result = cls.__new__(cls)
memo[id(self)] = result
for k, v in self.__dict__.items():
try:
setattr(result, k, copy.deepcopy(v, memo))
except TypeError:
if k == 'cli_ctx':
setattr(result, k, self.cli_ctx)
else:
raise
return result

# pylint: disable=no-self-use
def hidden(self):
return False
Expand All @@ -92,12 +76,12 @@ def show_in_help(self):
@property
def tag(self):
""" Returns a tag object. """
return ColorizedString(self._get_tag(self), self._color) if self.cli_ctx.enable_color else self._get_tag(self)
return ColorizedString(self._get_tag(self), self._color) if self._enable_color else self._get_tag(self)

@property
def message(self):
""" Returns a tuple with the formatted message string and the message length. """
return ColorizedString(self._get_message(self), self._color) if self.cli_ctx.enable_color \
return ColorizedString(self._get_message(self), self._color) if self._enable_color \
else "WARNING: " + self._get_message(self)


Expand Down