def parse_command_line(self, argv=None): """Parse the command line arguments.""" argv = sys.argv[1:] if argv is None else argv self.argv = [py3compat.cast_unicode(arg) for arg in argv] if argv and argv[0] == 'help': # turn `ipython help notebook` into `ipython notebook -h` argv = argv[1:] + ['-h'] if self.subcommands and len(argv) > 0: # we have subcommands, and one may have been specified subc, subargv = argv[0], argv[1:] if re.match(r'^\w(\-?\w)*$', subc) and subc in self.subcommands: # it's a subcommand, and *not* a flag or class parameter return self.initialize_subcommand(subc, subargv) # Arguments after a '--' argument are for the script IPython may be # about to run, not IPython iteslf. For arguments parsed here (help and # version), we want to only search the arguments up to the first # occurrence of '--', which we're calling interpreted_argv. try: interpreted_argv = argv[:argv.index('--')] except ValueError: interpreted_argv = argv if any(x in interpreted_argv for x in ('-h', '--help-all', '--help')): self.print_help('--help-all' in interpreted_argv) self.exit(0) if '--version' in interpreted_argv or '-V' in interpreted_argv: self.print_version() self.exit(0) # flatten flags&aliases, so cl-args get appropriate priority: flags, aliases = self.flatten_flags() loader = KVArgParseConfigLoader(argv=argv, aliases=aliases, flags=flags, log=self.log) config = loader.load_config() self.update_config(config) # store unparsed args in extra_args self.extra_args = loader.extra_args
def parse_command_line(self, argv=None): """Parse the command line arguments.""" argv = sys.argv[1:] if argv is None else argv self.argv = [ py3compat.cast_unicode(arg) for arg in argv ] if argv and argv[0] == 'help': # turn `ipython help notebook` into `ipython notebook -h` argv = argv[1:] + ['-h'] if self.subcommands and len(argv) > 0: # we have subcommands, and one may have been specified subc, subargv = argv[0], argv[1:] if re.match(r'^\w(\-?\w)*$', subc) and subc in self.subcommands: # it's a subcommand, and *not* a flag or class parameter return self.initialize_subcommand(subc, subargv) # Arguments after a '--' argument are for the script IPython may be # about to run, not IPython iteslf. For arguments parsed here (help and # version), we want to only search the arguments up to the first # occurrence of '--', which we're calling interpreted_argv. try: interpreted_argv = argv[:argv.index('--')] except ValueError: interpreted_argv = argv if any(x in interpreted_argv for x in ('-h', '--help-all', '--help')): self.print_help('--help-all' in interpreted_argv) self.exit(0) if '--version' in interpreted_argv or '-V' in interpreted_argv: self.print_version() self.exit(0) # flatten flags&aliases, so cl-args get appropriate priority: flags,aliases = self.flatten_flags() loader = KVArgParseConfigLoader(argv=argv, aliases=aliases, flags=flags, log=self.log) config = loader.load_config() self.update_config(config) # store unparsed args in extra_args self.extra_args = loader.extra_args
def _create_loader(self, argv, aliases, flags, classes): return KVArgParseConfigLoader(argv, aliases, flags, classes=classes, log=self.log)
def parse_command_line(self, argv=None): """Parse the jhubctl command line arguments. This overwrites traitlets' default `parse_command_line` method and tailors it to jhubctl's needs. """ argv = sys.argv[1:] if argv is None else argv self.argv = [py3compat.cast_unicode(arg) for arg in argv] # Append Provider Class to the list of configurable items. ProviderClass = getattr(providers, self.provider_type) self.classes.append(ProviderClass) if any(x in self.argv for x in ('-h', '--help-all', '--help')): self.print_help('--help-all' in self.argv) self.exit(0) if '--version' in self.argv or '-V' in self.argv: self.print_version() self.exit(0) # Generate a configuration file if flag is given. if '--generate-config' in self.argv: conf = self.generate_config_file() with open(self.config_file, 'w') as f: f.write(conf) self.exit(0) # If not config, parse commands. ## Run sanity checks. # Check that the minimum number of arguments have been called. if len(self.argv) < 2: raise JhubctlError( "Not enough arguments. \n\n" "Expected: jhubctl <action> <resource> <name>") # Check action self.resource_action = self.argv[0] if self.resource_action not in self.subcommands: raise JhubctlError( f"Subcommand is not recognized; must be one of these: {self.subcommands}") # Check resource self.resource_type = self.argv[1] if self.resource_type not in self.resources: raise JhubctlError( f"First argument after a subcommand must one of these" f"resources: {self.resources}" ) # Get name of resource. try: self.resource_name = self.argv[2] except IndexError: if self.resource_action != "get": raise JhubctlError( "Not enough arguments. \n\n" "Expected: jhubctl <action> <resource> <name>") else: self.resource_name = None # flatten flags&aliases, so cl-args get appropriate priority: flags, aliases = self.flatten_flags() loader = KVArgParseConfigLoader(argv=argv, aliases=aliases, flags=flags, log=self.log) config = loader.load_config() self.update_config(config) # store unparsed args in extra_args self.extra_args = loader.extra_args