59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#   Copyright 2012-2013 OpenStack Foundation
 | 
						|
#
 | 
						|
#   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.
 | 
						|
#
 | 
						|
 | 
						|
"""Modify cliff.CommandManager"""
 | 
						|
 | 
						|
import logging
 | 
						|
import pkg_resources
 | 
						|
 | 
						|
import cliff.commandmanager
 | 
						|
 | 
						|
 | 
						|
LOG = logging.getLogger(__name__)
 | 
						|
 | 
						|
 | 
						|
class CommandManager(cliff.commandmanager.CommandManager):
 | 
						|
    """Add additional functionality to cliff.CommandManager
 | 
						|
 | 
						|
    Load additional command groups after initialization
 | 
						|
    Add *_command_group() methods
 | 
						|
    """
 | 
						|
 | 
						|
    def __init__(self, namespace, convert_underscores=True):
 | 
						|
        self.group_list = []
 | 
						|
        super(CommandManager, self).__init__(namespace, convert_underscores)
 | 
						|
 | 
						|
    def _load_commands(self, group=None):
 | 
						|
        if not group:
 | 
						|
            group = self.namespace
 | 
						|
        self.group_list.append(group)
 | 
						|
        for ep in pkg_resources.iter_entry_points(group):
 | 
						|
            cmd_name = (
 | 
						|
                ep.name.replace('_', ' ')
 | 
						|
                if self.convert_underscores
 | 
						|
                else ep.name
 | 
						|
            )
 | 
						|
            self.commands[cmd_name] = ep
 | 
						|
        return
 | 
						|
 | 
						|
    def add_command_group(self, group=None):
 | 
						|
        """Adds another group of command entrypoints"""
 | 
						|
        if group:
 | 
						|
            self._load_commands(group)
 | 
						|
 | 
						|
    def get_command_groups(self):
 | 
						|
        """Returns a list of the loaded command groups"""
 | 
						|
        return self.group_list
 |