From 9d509aec08293bc5a73e98b8b341f51791a636e3 Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Tue, 14 May 2024 11:14:59 +0200 Subject: [PATCH] Use execFile instead of exec to fix Windows path issue --- src/NewProject.res | 2 +- src/RescriptVersions.res | 3 +-- src/bindings/Node.res | 2 +- src/bindings/NodePromisified.mjs | 4 ++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/NewProject.res b/src/NewProject.res index 20ab6a3..d1cc87c 100644 --- a/src/NewProject.res +++ b/src/NewProject.res @@ -78,7 +78,7 @@ let createNewProject = async () => { await updateRescriptJson(~projectName, ~versions) await RescriptVersions.installVersions(versions) - let _ = await Promisified.ChildProcess.exec("git init") + let _ = await Promisified.ChildProcess.execFile("git", ["init"]) s->P.Spinner.stop("Project created.") } diff --git a/src/RescriptVersions.res b/src/RescriptVersions.res index 6c9dffc..4f1ff70 100644 --- a/src/RescriptVersions.res +++ b/src/RescriptVersions.res @@ -66,9 +66,8 @@ let promptVersions = async () => { let installVersions = async ({rescriptVersion, rescriptCoreVersion}) => { let packageManager = PackageManagers.getActivePackageManager() let packages = [`rescript@${rescriptVersion}`, `@rescript/core@${rescriptCoreVersion}`] - let command = `${packageManager} add ${packages->Array.join(" ")}` - let _ = await Node.Promisified.ChildProcess.exec(command) + let _ = await Node.Promisified.ChildProcess.execFile(packageManager, ["add", ...packages]) } let esmModuleSystemName = ({rescriptVersion}) => diff --git a/src/bindings/Node.res b/src/bindings/Node.res index 14d14e9..795fe40 100644 --- a/src/bindings/Node.res +++ b/src/bindings/Node.res @@ -85,6 +85,6 @@ module Promisified = { type execResult = {stdout: string, stderr: string} @module("./NodePromisified.mjs") - external exec: string => promise = "exec" + external execFile: (string, array) => promise = "execFile" } } diff --git a/src/bindings/NodePromisified.mjs b/src/bindings/NodePromisified.mjs index afe0874..b8d35bf 100644 --- a/src/bindings/NodePromisified.mjs +++ b/src/bindings/NodePromisified.mjs @@ -1,4 +1,4 @@ -import { exec as execCallback } from "child_process"; +import { execFile as execFileCallback } from "child_process"; import { promisify } from "util"; -export const exec = promisify(execCallback); +export const execFile = promisify(execFileCallback);