mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Introduce a temporary but better shape of ExecFileInjectable error
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
6507011145
commit
ce8d58b0f4
@ -3,12 +3,12 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import type { ExecFileOptions } from "child_process";
|
import type { ExecFileException, ExecFileOptions } from "child_process";
|
||||||
import { execFile } from "child_process";
|
import { execFile } from "child_process";
|
||||||
import type { AsyncResult } from "../utils/async-result";
|
import type { AsyncResult } from "../utils/async-result";
|
||||||
|
|
||||||
export interface ExecFile {
|
export interface ExecFile {
|
||||||
(filePath: string, args: string[], options?: ExecFileOptions): Promise<AsyncResult<string, { stderr: string; error: Error }>>;
|
(filePath: string, args: string[], options?: ExecFileOptions): Promise<AsyncResult<string, ExecFileException & { stderr: string }>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const execFileInjectable = getInjectable({
|
const execFileInjectable = getInjectable({
|
||||||
@ -19,10 +19,7 @@ const execFileInjectable = getInjectable({
|
|||||||
if (error) {
|
if (error) {
|
||||||
resolve({
|
resolve({
|
||||||
callWasSuccessful: false,
|
callWasSuccessful: false,
|
||||||
error: {
|
error: Object.assign(error, { stderr }),
|
||||||
error,
|
|
||||||
stderr,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
resolve({
|
resolve({
|
||||||
|
|||||||
@ -185,10 +185,9 @@ describe("add custom helm repository in preferences", () => {
|
|||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await execFileMock.resolve({
|
await execFileMock.resolve({
|
||||||
callWasSuccessful: false,
|
callWasSuccessful: false,
|
||||||
error: {
|
error: Object.assign(new Error("Some error"), {
|
||||||
error: new Error("Some error"),
|
|
||||||
stderr: "",
|
stderr: "",
|
||||||
},
|
}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -130,10 +130,9 @@ describe("add helm repository from list in preferences", () => {
|
|||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await execFileMock.resolve({
|
await execFileMock.resolve({
|
||||||
callWasSuccessful: false,
|
callWasSuccessful: false,
|
||||||
error: {
|
error: Object.assign(new Error("Some error"), {
|
||||||
error: new Error("Some error"),
|
|
||||||
stderr: "",
|
stderr: "",
|
||||||
},
|
}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -85,10 +85,9 @@ describe("listing active helm repositories in preferences", () => {
|
|||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await execFileMock.resolve({
|
await execFileMock.resolve({
|
||||||
callWasSuccessful: false,
|
callWasSuccessful: false,
|
||||||
error: {
|
error: Object.assign(new Error("Some error"), {
|
||||||
error: new Error("some error"),
|
|
||||||
stderr: "some-error",
|
stderr: "some-error",
|
||||||
},
|
}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -235,10 +234,9 @@ describe("listing active helm repositories in preferences", () => {
|
|||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await execFileMock.resolve({
|
await execFileMock.resolve({
|
||||||
callWasSuccessful: false,
|
callWasSuccessful: false,
|
||||||
error: {
|
error: Object.assign(new Error("Some error"), {
|
||||||
error: new Error("Some error"),
|
|
||||||
stderr: "Some error",
|
stderr: "Some error",
|
||||||
},
|
}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -271,10 +269,9 @@ describe("listing active helm repositories in preferences", () => {
|
|||||||
|
|
||||||
await execFileMock.resolve({
|
await execFileMock.resolve({
|
||||||
callWasSuccessful: false,
|
callWasSuccessful: false,
|
||||||
error: {
|
error: Object.assign(new Error("no repositories found. You must add one before updating"), {
|
||||||
error: new Error("no repositories found. You must add one before updating"),
|
|
||||||
stderr: "no repositories found. You must add one before updating",
|
stderr: "no repositories found. You must add one before updating",
|
||||||
},
|
}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -300,10 +297,9 @@ describe("listing active helm repositories in preferences", () => {
|
|||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await execFileMock.resolve({
|
await execFileMock.resolve({
|
||||||
callWasSuccessful: false,
|
callWasSuccessful: false,
|
||||||
error: {
|
error: Object.assign(new Error("Some error"), {
|
||||||
error: new Error("Some error"),
|
|
||||||
stderr: "Some error",
|
stderr: "Some error",
|
||||||
},
|
}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -3,11 +3,12 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import type { ExecFileException } from "child_process";
|
||||||
import execFileInjectable from "../../../common/fs/exec-file.injectable";
|
import execFileInjectable from "../../../common/fs/exec-file.injectable";
|
||||||
import type { AsyncResult } from "../../../common/utils/async-result";
|
import type { AsyncResult } from "../../../common/utils/async-result";
|
||||||
import helmBinaryPathInjectable from "../helm-binary-path.injectable";
|
import helmBinaryPathInjectable from "../helm-binary-path.injectable";
|
||||||
|
|
||||||
export type ExecHelm = (args: string[]) => Promise<AsyncResult<string, { stderr: string; error: Error }>>;
|
export type ExecHelm = (args: string[]) => Promise<AsyncResult<string, ExecFileException & { stderr: string }>>;
|
||||||
|
|
||||||
const execHelmInjectable = getInjectable({
|
const execHelmInjectable = getInjectable({
|
||||||
id: "exec-helm",
|
id: "exec-helm",
|
||||||
|
|||||||
@ -30,7 +30,7 @@ const callForHelmManifestInjectable = getInjectable({
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
if (!result.callWasSuccessful) {
|
if (!result.callWasSuccessful) {
|
||||||
return { callWasSuccessful: false, error: result.error.error.message };
|
return { callWasSuccessful: false, error: result.error.message };
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -65,7 +65,7 @@ const addHelmRepositoryInjectable = getInjectable({
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
callWasSuccessful: false,
|
callWasSuccessful: false,
|
||||||
error: result.error.stderr || result.error.error.message,
|
error: result.error.stderr || result.error.message,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
@ -63,7 +63,7 @@ export class ResourceApplier {
|
|||||||
return result.response;
|
return result.response;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw result.error.stderr || result.error.error;
|
throw result.error.stderr || result.error.message;
|
||||||
}
|
}
|
||||||
|
|
||||||
async create(resource: string): Promise<string> {
|
async create(resource: string): Promise<string> {
|
||||||
@ -102,7 +102,7 @@ export class ResourceApplier {
|
|||||||
return result.response;
|
return result.response;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw result.error.stderr || result.error.error;
|
throw result.error.stderr || result.error.message;
|
||||||
} finally {
|
} finally {
|
||||||
await this.dependencies.deleteFile(fileName);
|
await this.dependencies.deleteFile(fileName);
|
||||||
}
|
}
|
||||||
@ -141,11 +141,11 @@ export class ResourceApplier {
|
|||||||
return result.response;
|
return result.response;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.dependencies.logger.error(`[RESOURCE-APPLIER] kubectl errored: ${result.error.error}`);
|
this.dependencies.logger.error(`[RESOURCE-APPLIER] kubectl errored: ${result.error.message}`);
|
||||||
|
|
||||||
const splitError = result.error.stderr.split(`.yaml": `);
|
const splitError = result.error.stderr.split(`.yaml": `);
|
||||||
|
|
||||||
throw splitError[1] || result.error.error;
|
throw splitError[1] || result.error.message;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected sanitizeObject(resource: string) {
|
protected sanitizeObject(resource: string) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user