51 baris
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			51 baris
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/python2 -O
 | |
| # vim: fileencoding=utf-8
 | |
| 
 | |
| #
 | |
| # The Qubes OS Project, https://www.qubes-os.org/
 | |
| #
 | |
| # Copyright (C) 2015  Joanna Rutkowska <joanna@invisiblethingslab.com>
 | |
| # Copyright (C) 2015  Wojtek Porczyk <woju@invisiblethingslab.com>
 | |
| #
 | |
| # This program is free software; you can redistribute it and/or modify
 | |
| # it under the terms of the GNU General Public License as published by
 | |
| # the Free Software Foundation; either version 2 of the License, or
 | |
| # (at your option) any later version.
 | |
| #
 | |
| # This program is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| # GNU General Public License for more details.
 | |
| #
 | |
| # You should have received a copy of the GNU General Public License along
 | |
| # with this program; if not, write to the Free Software Foundation, Inc.,
 | |
| # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | |
| #
 | |
| 
 | |
| '''Qubes' command line tools
 | |
| '''
 | |
| 
 | |
| import importlib
 | |
| 
 | |
| def get_parser_for_command(command):
 | |
|     '''Get parser for given qvm-tool.
 | |
| 
 | |
|     :param str command: command name
 | |
|     :rtype: argparse.ArgumentParser
 | |
|     :raises ImportError: when command's module is not found
 | |
|     :raises AttributeError: when parser was not found
 | |
|     '''
 | |
| 
 | |
|     module = importlib.import_module(
 | |
|         '.' + command.replace('-', '_'), 'qubes.tools')
 | |
| 
 | |
|     try:
 | |
|         parser = module.parser
 | |
|     except AttributeError:
 | |
|         try:
 | |
|             parser = module.get_parser()
 | |
|         except AttributeError:
 | |
|             raise AttributeError('cannot find parser in module')
 | |
| 
 | |
|     return parser
 | 
