31 lines
1.0 KiB
Python
31 lines
1.0 KiB
Python
#from __future__ import annotations
|
|
import sys
|
|
import os
|
|
import subprocess as sps
|
|
import whichcraft as wch
|
|
from typing import List, Optional
|
|
|
|
from eel.types import OptionsDictT
|
|
|
|
name: str = 'Electron'
|
|
|
|
def run(path: str, options: OptionsDictT, start_urls: List[str]) -> None:
|
|
if not isinstance(options['cmdline_args'], list):
|
|
raise TypeError("'cmdline_args' option must be of type List[str]")
|
|
cmd = [path] + options['cmdline_args']
|
|
cmd += ['.', ';'.join(start_urls)]
|
|
sps.Popen(cmd, stdout=sys.stdout, stderr=sys.stderr, stdin=sps.PIPE)
|
|
|
|
|
|
def find_path() -> Optional[str]:
|
|
if sys.platform in ['win32', 'win64']:
|
|
# It doesn't work well passing the .bat file to Popen, so we get the actual .exe
|
|
bat_path = wch.which('electron')
|
|
return os.path.join(bat_path, r'..\node_modules\electron\dist\electron.exe')
|
|
elif sys.platform in ['darwin', 'linux']:
|
|
# This should work find...
|
|
return wch.which('electron') # type: ignore # whichcraft doesn't currently have type hints
|
|
else:
|
|
return None
|
|
|