Popen_safe and wrappers can accept os.PathLike for cwd

Do not require users to convert it to a string first. This is a waste of
time and effort for exactly the same results.
pull/9888/head
Eli Schwartz 3 years ago
parent dd4e712024
commit d73e81c77b
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
  1. 6
      mesonbuild/mesonlib/universal.py
  2. 2
      mesonbuild/modules/unstable_external_project.py

@ -185,14 +185,14 @@ class GitException(MesonException):
self.output = output.strip() if output else ''
GIT = shutil.which('git')
def git(cmd: T.List[str], workingdir: str, check: bool = False, **kwargs: T.Any) -> T.Tuple[subprocess.Popen, str, str]:
def git(cmd: T.List[str], workingdir: T.Union[str, bytes, os.PathLike], check: bool = False, **kwargs: T.Any) -> T.Tuple[subprocess.Popen, str, str]:
cmd = [GIT] + cmd
p, o, e = Popen_safe(cmd, cwd=workingdir, **kwargs)
if check and p.returncode != 0:
raise GitException('Git command failed: ' + str(cmd), e)
return p, o, e
def quiet_git(cmd: T.List[str], workingdir: str, check: bool = False) -> T.Tuple[bool, str]:
def quiet_git(cmd: T.List[str], workingdir: T.Union[str, bytes, os.PathLike], check: bool = False) -> T.Tuple[bool, str]:
if not GIT:
m = 'Git program not found.'
if check:
@ -203,7 +203,7 @@ def quiet_git(cmd: T.List[str], workingdir: str, check: bool = False) -> T.Tuple
return False, e
return True, o
def verbose_git(cmd: T.List[str], workingdir: str, check: bool = False) -> bool:
def verbose_git(cmd: T.List[str], workingdir: T.Union[str, bytes, os.PathLike], check: bool = False) -> bool:
if not GIT:
m = 'Git program not found.'
if check:

@ -205,7 +205,7 @@ class ExternalProject(NewExtensionModule):
output.flush()
else:
mlog.log(m)
p, *_ = Popen_safe(command, cwd=str(workdir), env=self.run_env,
p, *_ = Popen_safe(command, cwd=workdir, env=self.run_env,
stderr=subprocess.STDOUT,
stdout=output)
if p.returncode != 0:

Loading…
Cancel
Save