More sophisticated PATH resolution for the launch command

This commit is contained in:
Kovid Goyal
2020-12-29 11:51:17 +05:30
parent c1b7023e3a
commit 2a026de526
3 changed files with 24 additions and 2 deletions

View File

@@ -8,12 +8,12 @@ from typing import Any, Dict, List, Optional, Sequence, Tuple
from .boss import Boss
from .child import Child
from .cli import parse_args, WATCHER_DEFINITION
from .cli import WATCHER_DEFINITION, parse_args
from .cli_stub import LaunchCLIOptions
from .constants import resolve_custom_file
from .fast_data_types import set_clipboard_string
from .tabs import Tab
from .utils import set_primary_selection
from .utils import find_exe, set_primary_selection, read_shell_environment
from .window import Watchers, Window
try:
@@ -274,6 +274,14 @@ def launch(boss: Boss, opts: LaunchCLIOptions, args: List[str], target_tab: Opti
elif x == '@active-kitty-window-id':
x = str(active.id)
final_cmd.append(x)
exe = find_exe(final_cmd[0])
if not exe:
env = read_shell_environment(boss.opts)
if 'PATH' in env:
import shutil
exe = shutil.which(final_cmd[0], path=env['PATH'])
if exe:
final_cmd[0] = exe
kw['cmd'] = final_cmd
if opts.type == 'overlay' and active:
kw['overlay_for'] = active.id