|
|
@ -16,7 +16,19 @@ class KatexClient: |
|
|
|
self._temp_dir = tempfile.TemporaryDirectory(prefix='formatitko') |
|
|
|
self._socket_file = self._temp_dir.name + "/katex-socket" |
|
|
|
|
|
|
|
self._server_process = subprocess.Popen(["node", os.path.dirname(os.path.realpath(__file__)) + "/katex-server/index.mjs", self._socket_file]) |
|
|
|
srcdir = os.path.dirname(os.path.realpath(__file__)) |
|
|
|
|
|
|
|
# Test if `node_modules` directory exists and if not, run `npm install` |
|
|
|
if not os.path.isdir(srcdir + "/katex-server/node_modules"): |
|
|
|
print("Installing node dependencies for the first time...") |
|
|
|
try: |
|
|
|
subprocess.run(["npm", "install"], cwd=srcdir+"/katex-server", check=True) |
|
|
|
except subprocess.CalledProcessError as e: |
|
|
|
if e.returncode == 127: |
|
|
|
raise Exception("npm not found. Node.js is required to use KaTeX.") |
|
|
|
else: |
|
|
|
raise e |
|
|
|
self._server_process = subprocess.Popen(["node", srcdir + "/katex-server/index.mjs", self._socket_file]) |
|
|
|
|
|
|
|
self._client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) |
|
|
|
|
|
|
|