MCPcopy
hub / github.com/t3-oss/create-t3-app / execWithSpinner

Function execWithSpinner

cli/src/helpers/installDependencies.ts:11–35  ·  view source on GitHub ↗
(
  projectDir: string,
  pkgManager: PackageManager,
  options: {
    args?: string[];
    stdout?: StdioOption;
    onDataHandle?: (spinner: Ora) => (data: Buffer) => void;
  }
)

Source from the content-addressed store, hash-verified

9import { logger } from "~/utils/logger.js";
10
11const execWithSpinner = async (
12 projectDir: string,
13 pkgManager: PackageManager,
14 options: {
15 args?: string[];
16 stdout?: StdioOption;
17 onDataHandle?: (spinner: Ora) => (data: Buffer) => void;
18 }
19) => {
20 const { onDataHandle, args = ["install"], stdout = "pipe" } = options;
21
22 const spinner = ora(`Running ${pkgManager} install...`).start();
23 const subprocess = execa(pkgManager, args, { cwd: projectDir, stdout });
24
25 await new Promise<void>((res, rej) => {
26 if (onDataHandle) {
27 subprocess.stdout?.on("data", onDataHandle(spinner));
28 }
29
30 void subprocess.on("error", (e) => rej(e));
31 void subprocess.on("close", () => res());
32 });
33
34 return spinner;
35};
36
37const runInstallCommand = async (
38 pkgManager: PackageManager,

Callers 1

runInstallCommandFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected