1# 2# Copyright (C) 2018 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the 'License'); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an 'AS IS' BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17import argparse 18import logging 19 20 21class ConsoleArgumentError(Exception): 22 """Raised when the console fails to parse commands.""" 23 pass 24 25 26class ConsoleArgumentParser(argparse.ArgumentParser): 27 """The argument parser for a console command.""" 28 29 def __init__(self, command_name, description): 30 """Initializes the ArgumentParser without --help option. 31 32 Args: 33 command_name: A string, the first argument of the command. 34 description: The help message about the command. 35 """ 36 super(ConsoleArgumentParser, self).__init__( 37 prog=command_name, description=description, add_help=False) 38 39 def ParseLine(self, line): 40 """Parses a command line. 41 42 Args: 43 line: A string, the command line. 44 45 Returns: 46 An argparse.Namespace object. 47 """ 48 return self.parse_args(line.split()) 49 50 # @Override 51 def error(self, message): 52 """Raises an exception when failing to parse the command. 53 54 Args: 55 message: The error message. 56 57 Raises: 58 ConsoleArgumentError. 59 """ 60 raise ConsoleArgumentError(message)