promptflow
52 строки · 1.1 Кб
1# ---------------------------------------------------------
2# Copyright (c) Microsoft Corporation. All rights reserved.
3# ---------------------------------------------------------
4
5import contextlib6import os7import platform8import subprocess9import sys10from pathlib import Path11
12REPO_ROOT_DIR = Path(__file__).parent.parent.parent13
14
15class Color:16BLUE = "\033[94m"17YELLOW = "\033[93m"18END = "\033[0m"19
20
21def print_blue(msg: str) -> None:22print(Color.BLUE + msg + Color.END)23
24
25def print_yellow(msg: str) -> None:26print(Color.YELLOW + msg + Color.END)27
28
29@contextlib.contextmanager30def change_cwd(path):31cwd = os.getcwd()32try:33os.chdir(path)34yield35finally:36os.chdir(cwd)37
38
39def run_cmd(cmd, verbose: bool = False) -> None:40print_blue(f"Running {' '.join(cmd)}")41shell = platform.system() == "Windows"42p = subprocess.Popen(43cmd,44stdout=subprocess.PIPE,45stderr=subprocess.STDOUT,46shell=shell,47)48for line in p.stdout:49line = line.decode("utf-8").rstrip()50if verbose:51sys.stdout.write(f"{line}\n")52p.communicate()53