|
|
|
"""Actions for handling composite arguments with argparse."""
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
from .argparsing import (
|
|
|
|
CompositeAction,
|
|
|
|
NamespaceParser,
|
|
|
|
)
|
|
|
|
|
|
|
|
from .parsers import (
|
|
|
|
DelegatedControllerParser,
|
|
|
|
NetworkSshTargetParser,
|
|
|
|
NetworkTargetParser,
|
|
|
|
OriginControllerParser,
|
|
|
|
PosixSshTargetParser,
|
|
|
|
PosixTargetParser,
|
|
|
|
SanityPythonTargetParser,
|
|
|
|
UnitsPythonTargetParser,
|
|
|
|
WindowsSshTargetParser,
|
|
|
|
WindowsTargetParser,
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
class OriginControllerAction(CompositeAction):
|
|
|
|
"""Composite action parser for the controller when the only option is `origin`."""
|
|
|
|
|
|
|
|
def create_parser(self) -> NamespaceParser:
|
|
|
|
"""Return a namespace parser to parse the argument associated with this action."""
|
|
|
|
return OriginControllerParser()
|
|
|
|
|
|
|
|
|
|
|
|
class DelegatedControllerAction(CompositeAction):
|
|
|
|
"""Composite action parser for the controller when delegation is supported."""
|
|
|
|
|
|
|
|
def create_parser(self) -> NamespaceParser:
|
|
|
|
"""Return a namespace parser to parse the argument associated with this action."""
|
|
|
|
return DelegatedControllerParser()
|
|
|
|
|
|
|
|
|
|
|
|
class PosixTargetAction(CompositeAction):
|
|
|
|
"""Composite action parser for a POSIX target."""
|
|
|
|
|
|
|
|
def create_parser(self) -> NamespaceParser:
|
|
|
|
"""Return a namespace parser to parse the argument associated with this action."""
|
|
|
|
return PosixTargetParser()
|
|
|
|
|
|
|
|
|
|
|
|
class WindowsTargetAction(CompositeAction):
|
|
|
|
"""Composite action parser for a Windows target."""
|
|
|
|
|
|
|
|
def create_parser(self) -> NamespaceParser:
|
|
|
|
"""Return a namespace parser to parse the argument associated with this action."""
|
|
|
|
return WindowsTargetParser()
|
|
|
|
|
|
|
|
|
|
|
|
class NetworkTargetAction(CompositeAction):
|
|
|
|
"""Composite action parser for a network target."""
|
|
|
|
|
|
|
|
def create_parser(self) -> NamespaceParser:
|
|
|
|
"""Return a namespace parser to parse the argument associated with this action."""
|
|
|
|
return NetworkTargetParser()
|
|
|
|
|
|
|
|
|
|
|
|
class SanityPythonTargetAction(CompositeAction):
|
|
|
|
"""Composite action parser for a sanity target."""
|
|
|
|
|
|
|
|
def create_parser(self) -> NamespaceParser:
|
|
|
|
"""Return a namespace parser to parse the argument associated with this action."""
|
|
|
|
return SanityPythonTargetParser()
|
|
|
|
|
|
|
|
|
|
|
|
class UnitsPythonTargetAction(CompositeAction):
|
|
|
|
"""Composite action parser for a units target."""
|
|
|
|
|
|
|
|
def create_parser(self) -> NamespaceParser:
|
|
|
|
"""Return a namespace parser to parse the argument associated with this action."""
|
|
|
|
return UnitsPythonTargetParser()
|
|
|
|
|
|
|
|
|
|
|
|
class PosixSshTargetAction(CompositeAction):
|
|
|
|
"""Composite action parser for a POSIX SSH target."""
|
|
|
|
|
|
|
|
def create_parser(self) -> NamespaceParser:
|
|
|
|
"""Return a namespace parser to parse the argument associated with this action."""
|
|
|
|
return PosixSshTargetParser()
|
|
|
|
|
|
|
|
|
|
|
|
class WindowsSshTargetAction(CompositeAction):
|
|
|
|
"""Composite action parser for a Windows SSH target."""
|
|
|
|
|
|
|
|
def create_parser(self) -> NamespaceParser:
|
|
|
|
"""Return a namespace parser to parse the argument associated with this action."""
|
|
|
|
return WindowsSshTargetParser()
|
|
|
|
|
|
|
|
|
|
|
|
class NetworkSshTargetAction(CompositeAction):
|
|
|
|
"""Composite action parser for a network SSH target."""
|
|
|
|
|
|
|
|
def create_parser(self) -> NamespaceParser:
|
|
|
|
"""Return a namespace parser to parse the argument associated with this action."""
|
|
|
|
return NetworkSshTargetParser()
|