docs: 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