#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright (C) 2020 Igalia S.L. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this program; if not, write to the # Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301, USA. import os import subprocess import sys scriptdir = os.path.abspath(os.path.dirname(__file__)) SDK_PROJECT_PATH = os.path.join(scriptdir, "..", "buildstream") PIPENV_PIPFILE = os.path.realpath(os.path.join(SDK_PROJECT_PATH, "Pipfile")) def run_pipenv(args: list, **kw) -> subprocess.CompletedProcess: local_env = { "PIPENV_VENV_IN_PROJECT": "1", "PIPENV_PIPFILE": PIPENV_PIPFILE } kw["env"] = os.environ kw["env"].update(local_env) return subprocess.run(["pipenv", ] + args, **kw) def ensure_environment(): result = run_pipenv(["--venv",], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) if result.returncode != 0: run_pipenv(["install"]) def run_bst(args: list) -> subprocess.CompletedProcess: return run_pipenv(["run", "bst", "-C", SDK_PROJECT_PATH] + args) def main(args: list) -> int: ensure_environment() if args[0] == "pipenv": run_pipenv(args[1:]) else: run_bst(args) return 0 if __name__ == "__main__": sys.exit(main(sys.argv[1:]))