blob: d187094a26b2dfafcd6d5f7ee933fcaff42d674d [file] [log] [blame]
# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""A module for the Action plugin base class."""
import cr
class Action(cr.Plugin):
"""Base class for cr actions.
This provides the standard interface used to add actions to commands,
including support for selecting the right implementation of an action and
handling command line arguments for the action.
"""
@classmethod
def AddArguments(cls, command, parser):
cls.AddSelectorArg(command, parser)
@classmethod
def AddSelectorArg(cls, command, parser):
parser.add_argument(
cls.SELECTOR_ARG, dest=cls.SELECTOR,
choices=cls.Choices(),
default=None,
help=cls.SELECTOR_HELP + ' Overrides ' + cls.SELECTOR
)
@cr.Plugin.activemethod
def Skipping(self):
"""A method that is used to detect void or skip implementations.
Most actions have a skip version that you can select to indicate that you
want to not perform the action at all.
It is important that commands can detect this so they can modify the action
sequence if there are other changes that depend on it (for instance not
performing actions that were only there to produce the inputs of an action
that is being skipped).
Returns:
True if this implementation is a skip action.
"""
return self.name == 'skip'