diff --git a/src/DependencyManager/ExecutableDependency.ts b/src/DependencyManager/ExecutableDependency.ts index d6ac5dcf..7695d422 100644 --- a/src/DependencyManager/ExecutableDependency.ts +++ b/src/DependencyManager/ExecutableDependency.ts @@ -8,22 +8,31 @@ export class ExecutableDependency extends Dependency { } protected loadVersion() { - return this.run(this.versionArgs).then(({ stdout }) => stdout); + return this.run({ args: this.versionArgs }).then(({ stdout }) => stdout); } private get versionArgs(): string[] { return this.options.versionArgs || ["--version"]; } - public run(args: RunArg[], options: RunOptions = {}): Promise { + public run({ + args, + options = {}, + stdin, + }: { + args: RunArg[]; + options?: RunOptions; + stdin?: string; + }): Promise { return this.resolveArgs(args).then(finalArgs => - this.spawn({ exe: this.program, args: finalArgs, options }) + this.spawn({ exe: this.program, args: finalArgs, options, stdin }) ); } private resolveArgs(args: RunArg[]): Promise { - const truthyArgs: any[] = args.filter(Boolean); - return Promise.all(truthyArgs); + return Promise.all(args as any[]).then(resolvedArgs => + resolvedArgs.filter(Boolean) + ); } private get program(): string { diff --git a/test/DependencyManager/ExecutableDependency.spec.ts b/test/DependencyManager/ExecutableDependency.spec.ts index 6da023dc..81ccb67b 100644 --- a/test/DependencyManager/ExecutableDependency.spec.ts +++ b/test/DependencyManager/ExecutableDependency.spec.ts @@ -50,7 +50,7 @@ describe("successfully loaded Executable dependency", () => { return await dependency.load().then(() => { expect(dependency.isInstalled).toBe(true); - return dependency.run(["--help"]).then(({ stdout }) => { + return dependency.run({ args: ["--help"] }).then(({ stdout }) => { expect(stdout).toContain("node"); }); }); @@ -71,7 +71,7 @@ describe("successfully loaded Executable dependency", () => { const dependency = new ExecutableDependency(options); return await dependency.load().then(() => { expect(dependency.isInstalled).toBe(true); - return dependency.run(["--help"]).then(({ stdout }) => { + return dependency.run({ args: ["--help"] }).then(({ stdout }) => { expect(stdout).toContain("node"); }); }); @@ -87,7 +87,7 @@ describe("successfully loaded Executable dependency", () => { const dependency = new ExecutableDependency(options); return await dependency.load().then(() => { expect(dependency.isInstalled).toBe(true); - return dependency.run(["--help"]).then(({ stdout }) => { + return dependency.run({ args: ["--help"] }).then(({ stdout }) => { expect(stdout).toContain("node"); }); }); @@ -103,7 +103,7 @@ describe("successfully loaded Executable dependency", () => { const dependency = new ExecutableDependency(options); return await dependency.load().then(() => { expect(dependency.isInstalled).toBe(true); - return dependency.run(["--help"]).then(({ stdout }) => { + return dependency.run({ args: ["--help"] }).then(({ stdout }) => { expect(stdout).toContain("node"); }); }); @@ -120,7 +120,7 @@ describe("successfully loaded Executable dependency", () => { const dependency = new ExecutableDependency(options); return await dependency.load().then(() => { expect(dependency.isInstalled).toBe(true); - return dependency.run(["--help"]).then(({ stdout }) => { + return dependency.run({ args: ["--help"] }).then(({ stdout }) => { expect(stdout).toContain("node"); }); }); @@ -136,7 +136,7 @@ describe("successfully loaded Executable dependency", () => { const dependency = new ExecutableDependency(options); return await dependency.load().then(() => { expect(dependency.isInstalled).toBe(true); - return dependency.run(["--help"]).then(({ stdout }) => { + return dependency.run({ args: ["--help"] }).then(({ stdout }) => { expect(stdout).toContain("node"); }); }); @@ -153,7 +153,7 @@ describe("successfully loaded Executable dependency", () => { const dependency = new ExecutableDependency(options); return await dependency.load().then(() => { expect(dependency.isInstalled).toBe(true); - return dependency.run(["--help"]).then(({ stdout }) => { + return dependency.run({ args: ["--help"] }).then(({ stdout }) => { expect(stdout).toContain("node"); }); });