#!/usr/bin/env python3.4 """This is a script to install git-lfs to a tempdir for use in tests""" import io import os.path import shutil import tarfile from urllib.request import urlopen DOWNLOAD_PATH = ( 'https://github.com/github/git-lfs/releases/download/' 'v1.1.0/git-lfs-linux-amd64-1.1.0.tar.gz' ) PATH_IN_TAR = 'git-lfs-1.1.0/git-lfs' DEST_PATH = '/tmp/git-lfs/git-lfs' DEST_DIR = os.path.dirname(DEST_PATH) def main(): if ( os.path.exists(DEST_PATH) and os.path.isfile(DEST_PATH) and os.access(DEST_PATH, os.X_OK) ): print('Already installed!') return 0 shutil.rmtree(DEST_DIR, ignore_errors=True) os.makedirs(DEST_DIR, exist_ok=True) contents = io.BytesIO(urlopen(DOWNLOAD_PATH).read()) with tarfile.open(fileobj=contents) as tar: with tar.extractfile(PATH_IN_TAR) as src_file: with open(DEST_PATH, 'wb') as dest_file: shutil.copyfileobj(src_file, dest_file) os.chmod(DEST_PATH, 0o755) if __name__ == '__main__': exit(main())