From 4a6f071cfec0690a374f0240e5bfdb21aa1c1137 Mon Sep 17 00:00:00 2001 From: Tzu-ping Chung Date: Tue, 24 Jul 2018 20:20:20 +0800 Subject: [PATCH] Improve emulator detection for multiple values Running MSYS inside Cmder now returns "cmder,msys", and can look up the shell correctly. --- pipenv/shells.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pipenv/shells.py b/pipenv/shells.py index ed2690ac..10826f22 100644 --- a/pipenv/shells.py +++ b/pipenv/shells.py @@ -223,12 +223,20 @@ SHELL_LOOKUP = collections.defaultdict( def _detect_emulator(): + keys = [] if os.environ.get("CMDER_ROOT"): - return "cmder" - return "" + keys.append("cmder") + if os.environ.get("MSYSTEM"): + keys.append("msys") + return ",".join(keys) def choose_shell(): emulator = PIPENV_EMULATOR.lower() or _detect_emulator() type_, command = detect_info() - return SHELL_LOOKUP[type_][emulator](command) + shell_types = SHELL_LOOKUP[type_] + for key in emulator.split(","): + key = key.strip().lower() + if key in shell_types: + return shell_types[key](command) + return shell_types[""](command)