diff --git a/pip/__init__.py b/pip/__init__.py index 2f7475be8e6..05c01747ef7 100755 --- a/pip/__init__.py +++ b/pip/__init__.py @@ -100,7 +100,10 @@ def parseopts(args): description = [''] + ['%-27s %s' % (i, j) for i, j in command_summaries] parser.description = '\n'.join(description) - options, args = parser.parse_args(args) + options, cmd_args = parser.parse_args(args) + # args: ['--timeout=5', 'install', '--user', 'INITools'] + # cmd_args: ['install', '--user', 'INITools'] + # note: parser calls disable_interspersed_args() if options.version: sys.stdout.write(parser.version) @@ -108,16 +111,18 @@ def parseopts(args): sys.exit() # pip || pip help || pip --help -> print_help() - if not args or (args[0] == 'help' and len(args) == 1): + if not cmd_args or (cmd_args[0] == 'help' and len(cmd_args) == 1): parser.print_help() sys.exit() - if not args: + if not cmd_args: msg = ('You must give a command ' '(use "pip --help" to see a list of commands)') raise CommandError(msg) - command = args[0].lower() + command = cmd_args[0].lower() # install + args.remove(cmd_args[0]) + cmd_args = args # --timeout=5 --user INITools if command not in commands: guess = get_similar_commands(command) @@ -128,7 +133,7 @@ def parseopts(args): raise CommandError(' - '.join(msg)) - return command, options, args, parser + return command, options, cmd_args, parser def main(initial_args=None): @@ -138,7 +143,7 @@ def main(initial_args=None): autocomplete() try: - cmd_name, options, args, parser = parseopts(initial_args) + cmd_name, options, cmd_args, parser = parseopts(initial_args) except PipError: e = sys.exc_info()[1] sys.stderr.write("ERROR: %s" % e) @@ -146,7 +151,7 @@ def main(initial_args=None): sys.exit(1) command = commands[cmd_name](parser) # see baseparser.Command - return command.main(args[1:], options) + return command.main(cmd_args, options) def bootstrap(): diff --git a/pip/basecommand.py b/pip/basecommand.py index 1a22c47f234..aa37b221da3 100644 --- a/pip/basecommand.py +++ b/pip/basecommand.py @@ -67,25 +67,11 @@ def _copy_option_group(self, parser, group): parser.add_option_group(new_group) - def merge_options(self, initial_options, options): - # Make sure we have all global options carried over - attrs = ['log', 'proxy', 'require_venv', - 'log_explicit_levels', 'log_file', - 'timeout', 'default_vcs', - 'skip_requirements_regex', - 'no_input', 'exists_action', - 'cert'] - for attr in attrs: - setattr(options, attr, getattr(initial_options, attr) or getattr(options, attr)) - options.quiet += initial_options.quiet - options.verbose += initial_options.verbose - def setup_logging(self): pass def main(self, args, initial_options): options, args = self.parser.parse_args(args) - self.merge_options(initial_options, options) level = 1 # Notify level += options.verbose