Move git helper out into mesonlib for reuse
Reuse the git helper for `meson wrap` and `meson subprojects` so we don't need to maintain the same git-colors-on-windows workarounds in multiple places.
This commit is contained in:
parent
da486bfddc
commit
712b2f08c7
|
@ -56,6 +56,20 @@ else:
|
|||
python_command = [sys.executable]
|
||||
meson_command = None
|
||||
|
||||
GIT = shutil.which('git')
|
||||
def git(cmd: T.List[str], workingdir: str, **kwargs) -> subprocess.CompletedProcess:
|
||||
pc = subprocess.run([GIT, '-C', workingdir] + cmd,
|
||||
# Redirect stdin to DEVNULL otherwise git messes up the
|
||||
# console and ANSI colors stop working on Windows.
|
||||
stdin=subprocess.DEVNULL, **kwargs)
|
||||
# Sometimes git calls git recursively, such as `git submodule update
|
||||
# --recursive` which will be without the above workaround, so set the
|
||||
# console mode again just in case.
|
||||
if platform.system().lower() == 'windows':
|
||||
mlog._windows_ansi()
|
||||
return pc
|
||||
|
||||
|
||||
def set_meson_command(mainfile):
|
||||
global python_command
|
||||
global meson_command
|
||||
|
|
|
@ -2,7 +2,7 @@ import os, subprocess
|
|||
import argparse
|
||||
|
||||
from . import mlog
|
||||
from .mesonlib import Popen_safe
|
||||
from .mesonlib import git, Popen_safe
|
||||
from .wrap.wrap import API_ROOT, PackageDefinition, Resolver, WrapException
|
||||
from .wrap import wraptool
|
||||
|
||||
|
@ -40,12 +40,8 @@ def update_file(wrap, repo_dir, options):
|
|||
' In that case, delete', mlog.bold(repo_dir), 'and run', mlog.bold('meson --reconfigure'))
|
||||
|
||||
def git_output(cmd, workingdir):
|
||||
return subprocess.check_output(['git', '-C', workingdir] + cmd,
|
||||
# Redirect stdin to DEVNULL otherwise git
|
||||
# messes up the console and ANSI colors stop
|
||||
# working on Windows.
|
||||
stdin=subprocess.DEVNULL,
|
||||
stderr=subprocess.STDOUT).decode()
|
||||
return git(cmd, workingdir, check=True, universal_newlines=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout
|
||||
|
||||
def git_show(repo_dir):
|
||||
commit_message = git_output(['show', '--quiet', '--pretty=format:%h%n%d%n%s%n[%an]'], repo_dir)
|
||||
|
|
|
@ -18,7 +18,6 @@ import urllib.request
|
|||
import urllib.error
|
||||
import urllib.parse
|
||||
import os
|
||||
import platform
|
||||
import hashlib
|
||||
import shutil
|
||||
import tempfile
|
||||
|
@ -29,7 +28,7 @@ import configparser
|
|||
import typing as T
|
||||
|
||||
from . import WrapMode
|
||||
from ..mesonlib import ProgressBar, MesonException
|
||||
from ..mesonlib import git, GIT, ProgressBar, MesonException
|
||||
|
||||
if T.TYPE_CHECKING:
|
||||
import http.client
|
||||
|
@ -44,23 +43,10 @@ except ImportError:
|
|||
has_ssl = False
|
||||
API_ROOT = 'http://wrapdb.mesonbuild.com/v1/'
|
||||
|
||||
GIT = shutil.which('git')
|
||||
REQ_TIMEOUT = 600.0
|
||||
SSL_WARNING_PRINTED = False
|
||||
WHITELIST_SUBDOMAIN = 'wrapdb.mesonbuild.com'
|
||||
|
||||
def git(cmd: T.List[str], workingdir: str, **kwargs) -> subprocess.CompletedProcess:
|
||||
pc = subprocess.run([GIT, '-C', workingdir] + cmd,
|
||||
# Redirect stdin to DEVNULL otherwise git messes up the
|
||||
# console and ANSI colors stop working on Windows.
|
||||
stdin=subprocess.DEVNULL, **kwargs)
|
||||
# Sometimes git calls git recursively, such as `git submodule update
|
||||
# --recursive` which will be without the above workaround, so set the
|
||||
# console mode again just in case.
|
||||
if platform.system().lower() == 'windows':
|
||||
mlog._windows_ansi()
|
||||
return pc
|
||||
|
||||
def quiet_git(cmd: T.List[str], workingdir: str) -> T.Tuple[bool, str]:
|
||||
if not GIT:
|
||||
return False, 'Git program not found.'
|
||||
|
|
Loading…
Reference in New Issue