Revision c8e17a67 kamaki/cli/command_shell.py

b/kamaki/cli/command_shell.py
167 167

  
168 168
            # exec command or change context
169 169
            if subcmd.is_command:  # exec command
170
                cls = subcmd.get_class()
171
                ldescr = getattr(cls, 'long_description', '')
172
                if subcmd.path == 'history_run':
173
                    instance = cls(dict(cmd_parser.arguments), self.cmd_tree)
174
                else:
175
                    instance = cls(dict(cmd_parser.arguments))
176
                cmd_parser.update_arguments(instance.arguments)
177
                instance.arguments.pop('config')
178
                cmd_parser.arguments = instance.arguments
179
                cmd_parser.syntax = '%s %s' % (
180
                    subcmd.path.replace('_', ' '), cls.syntax)
181
                if '-h' in cmd_args or '--help' in cmd_args:
182
                    cmd_parser.parser.print_help()
183
                    if ldescr:
184
                        print('\nDetails:')
185
                        print('%s' % ldescr)
186
                    return
187
                cmd_parser.parse(cmd_args)
188

  
189
                for name, arg in instance.arguments.items():
190
                    arg.value = getattr(cmd_parser.parsed, name, arg.default)
191

  
192 170
                try:
171
                    cls = subcmd.get_class()
172
                    ldescr = getattr(cls, 'long_description', '')
173
                    if subcmd.path == 'history_run':
174
                        instance = cls(dict(cmd_parser.arguments),
175
                            self.cmd_tree)
176
                    else:
177
                        instance = cls(dict(cmd_parser.arguments))
178
                    cmd_parser.update_arguments(instance.arguments)
179
                    instance.arguments.pop('config')
180
                    cmd_parser.arguments = instance.arguments
181
                    cmd_parser.syntax = '%s %s' % (
182
                        subcmd.path.replace('_', ' '), cls.syntax)
183
                    if '-h' in cmd_args or '--help' in cmd_args:
184
                        cmd_parser.parser.print_help()
185
                        if ldescr.strip():
186
                            print('\nDetails:')
187
                            print('%s' % ldescr)
188
                        return
189
                    cmd_parser.parse(cmd_args)
190

  
191
                    for name, arg in instance.arguments.items():
192
                        arg.value = getattr(cmd_parser.parsed, name,
193
                            arg.default)
194

  
193 195
                    exec_cmd(instance,
194 196
                        cmd_parser.unparsed,
195 197
                        cmd_parser.parser.print_help)

Also available in: Unified diff