def deduce_command(): '''Deduce which command to use for ``powerline`` Candidates: * ``powerline``. Present only when installed system-wide. * ``{powerline_root}/scripts/powerline``. Present after ``pip install -e`` was run and C client was compiled (in this case ``pip`` does not install binary file). * ``{powerline_root}/client/powerline.sh``. Useful when ``sh``, ``sed`` and ``socat`` are present, but ``pip`` or ``setup.py`` was not run. * ``{powerline_root}/client/powerline.py``. Like above, but when one of ``sh``, ``sed`` and ``socat`` was not present. * ``powerline-render``. Should not really ever be used. * ``{powerline_root}/scripts/powerline-render``. Same. ''' return ( None or check_command('powerline') or check_command(os.path.join(POWERLINE_ROOT, 'scripts', 'powerline')) or ((which('sh') and which('sed') and which('socat')) and check_command(os.path.join(POWERLINE_ROOT, 'client', 'powerline.sh'))) or check_command(os.path.join(POWERLINE_ROOT, 'client', 'powerline.py')) or check_command('powerline-render') or check_command(os.path.join(POWERLINE_ROOT, 'scripts', 'powerline-render')) )
def check_command(cmd): if which(cmd): return cmd
# shlex will not split if a space occurs in an arguments value. subprocess.check_call(compiler + shlex.split(cflags) + ['client/powerline.c', '-o', 'scripts/powerline']) try: compile_client() except Exception as e: print('Compiling C version of powerline-client failed') logging.exception(e) # FIXME Catch more specific exceptions import shutil if hasattr(shutil, 'which'): which = shutil.which else: sys.path.append(CURRENT_DIR) from powerline.lib.shell import which if which('socat') and which('sed') and which('sh'): print('Using powerline.sh script instead of C version (requires socat, sed and sh)') shutil.copyfile('client/powerline.sh', 'scripts/powerline') can_use_scripts = True else: print('Using powerline.py script instead of C version') shutil.copyfile('client/powerline.py', 'scripts/powerline') can_use_scripts = True else: can_use_scripts = False def get_version(): base_version = '2.7' base_version += '.dev9999' try:
# shlex will not split if a space occurs in an arguments value. subprocess.check_call(compiler + shlex.split(cflags) + ['client/powerline.c', '-o', 'scripts/powerline']) try: compile_client() except Exception as e: print('Compiling C version of powerline-client failed') logging.exception(e) # FIXME Catch more specific exceptions import shutil if hasattr(shutil, 'which'): which = shutil.which else: sys.path.append(CURRENT_DIR) from powerline.lib.shell import which if which('socat') and which('sed') and which('sh'): print('Using powerline.sh script instead of C version (requires socat, sed and sh)') shutil.copyfile('client/powerline.sh', 'scripts/powerline') can_use_scripts = True else: print('Using powerline.py script instead of C version') shutil.copyfile('client/powerline.py', 'scripts/powerline') can_use_scripts = True else: can_use_scripts = False def get_version(): base_version = '2.5' base_version += '.dev9999' try:
def __init__(self, *args, **kwargs): if not which('git'): raise OSError('git executable is not available') super(Repository, self).__init__(*args, **kwargs)
def __init__(self, *args, **kwargs): if not which("git"): raise OSError("git executable is not available") super(Repository, self).__init__(*args, **kwargs)