Override cliff command parser to handle argarser conflict_handler
The argparse conflict_handler is hardcoded in Cliff, this patch override the command.Command().get_parser from Cliff in order to change the value. The conflict_handler from argparse is important for the VF because it's allow callers to override VF CLI args. Change-Id: I72524eeb3fc1ac0f384dcef25de61089ff15f67f
This commit is contained in:
parent
eaf304f62e
commit
9ba9c9ce62
|
@ -0,0 +1,36 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# Copyright 2021 Red Hat, Inc.
|
||||
#
|
||||
# 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.
|
||||
|
||||
|
||||
from cliff import _argparse
|
||||
from cliff.command import Command
|
||||
|
||||
|
||||
class BaseCommand(Command):
|
||||
"""Base Command client implementation class"""
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
"""Argument parser for base command"""
|
||||
parser = _argparse.ArgumentParser(
|
||||
description=self.get_description(),
|
||||
epilog=self.get_epilog(),
|
||||
prog=prog_name,
|
||||
formatter_class=_argparse.SmartHelpFormatter,
|
||||
conflict_handler='resolve',
|
||||
)
|
||||
for hook in self._hooks:
|
||||
hook.obj.get_parser(parser)
|
||||
return parser
|
|
@ -16,15 +16,12 @@
|
|||
|
||||
import json
|
||||
|
||||
from cliff.command import Command
|
||||
from cliff.lister import Lister
|
||||
|
||||
from validations_libs import constants
|
||||
from validations_libs.validation_actions import ValidationActions
|
||||
from validations_libs.validation_logs import ValidationLogs
|
||||
from validations_libs.cli.base import BaseCommand
|
||||
|
||||
|
||||
class ListHistory(Lister):
|
||||
class ListHistory(BaseCommand):
|
||||
"""Display Validations execution history"""
|
||||
|
||||
def get_parser(self, parser):
|
||||
|
@ -70,7 +67,7 @@ class ListHistory(Lister):
|
|||
history_limit=parsed_args.history_limit)
|
||||
|
||||
|
||||
class GetHistory(Command):
|
||||
class GetHistory(BaseCommand):
|
||||
"""Display details about a Validation execution"""
|
||||
|
||||
def get_parser(self, parser):
|
||||
|
|
|
@ -17,15 +17,14 @@
|
|||
import getpass
|
||||
import sys
|
||||
|
||||
from cliff.command import Command
|
||||
|
||||
from validations_libs import constants
|
||||
from validations_libs.validation_actions import ValidationActions
|
||||
from validations_libs.cli import common
|
||||
from validations_libs.cli.base import BaseCommand
|
||||
from validations_libs.cli.parseractions import CommaListAction, KeyValueAction
|
||||
|
||||
|
||||
class Run(Command):
|
||||
class Run(BaseCommand):
|
||||
"""Validation Run client implementation class"""
|
||||
|
||||
def get_parser(self, parser):
|
||||
|
|
Loading…
Reference in New Issue