code: def run_command(
          cls,
          cmd,  # type: List[str]
          show_stdout=True,  # type: bool
          cwd=None,  # type: Optional[str]
          on_returncode='raise',  # type: str
          extra_ok_returncodes=None,  # type: Optional[Iterable[int]]
          command_desc=None,  # type: Optional[str]
          extra_environ=None,  # type: Optional[Mapping[str, Any]]
          spinner=None  # type: Optional[SpinnerInterface]
      ):
          # type: (...) -> Optional[Text]
          
          cmd = [cls.name] + cmd
          try:
              return call_subprocess(cmd, show_stdout, cwd,
                                     on_returncode=on_returncode,
                                     extra_ok_returncodes=extra_ok_returncodes,
                                     command_desc=command_desc,
                                     extra_environ=extra_environ,
                                     unset_environ=cls.unset_environ,
                                     spinner=spinner)
          except OSError as e:
              # errno.ENOENT = no such file or directory
              # In other words, the VCS executable isn't available
              if e.errno == errno.ENOENT:
                  raise BadCommand(
                      'Cannot find command %r - do you have '
                      '%r installed and in your '
                      'PATH?' % (cls.name, cls.name))
              else:
                  raise
docs: Run a VCS subcommand
          This is simply a wrapper around call_subprocess that adds the VCS
          command name, and checks that the VCS is available