From 5e82e6055134588678416ba6ab4e8d4e139d4793 Mon Sep 17 00:00:00 2001 From: Alex McKinney Date: Tue, 1 Oct 2024 13:16:09 -0400 Subject: [PATCH] feat(seed): Always include docker logs (#4784) --- .../docker-utils/package.json | 1 + .../src/__test__/runDocker.test.ts | 2 ++ .../docker-utils/src/runDocker.ts | 22 ++++++++++++------- .../src/runGenerator.ts | 2 ++ pnpm-lock.yaml | 3 +++ 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/packages/cli/generation/local-generation/docker-utils/package.json b/packages/cli/generation/local-generation/docker-utils/package.json index b8ba613667a..8cd209c1e07 100644 --- a/packages/cli/generation/local-generation/docker-utils/package.json +++ b/packages/cli/generation/local-generation/docker-utils/package.json @@ -29,6 +29,7 @@ }, "dependencies": { "@fern-api/fs-utils": "workspace:*", + "@fern-api/logger": "workspace:*", "dockerode": "^4.0.2", "tmp-promise": "^3.0.3" }, diff --git a/packages/cli/generation/local-generation/docker-utils/src/__test__/runDocker.test.ts b/packages/cli/generation/local-generation/docker-utils/src/__test__/runDocker.test.ts index 572819b1b87..78efcf633ab 100644 --- a/packages/cli/generation/local-generation/docker-utils/src/__test__/runDocker.test.ts +++ b/packages/cli/generation/local-generation/docker-utils/src/__test__/runDocker.test.ts @@ -1,4 +1,5 @@ import { AbsoluteFilePath, doesPathExist, join, RelativeFilePath } from "@fern-api/fs-utils"; +import { CONSOLE_LOGGER } from "@fern-api/logger"; import { exec } from "child_process"; import { mkdir, rm } from "fs/promises"; import path from "path"; @@ -33,6 +34,7 @@ describe("runDocker", () => { const expectedOutputFilePath = "my-file.txt"; await runDocker({ + logger: CONSOLE_LOGGER, imageName: BASIC_WRITER_IMAGE_NAME, args: [expectedOutputFilePath], binds: [`${HOST_OUTPUT_DIR}:${IMAGE_OUTPUT_DIR}`] diff --git a/packages/cli/generation/local-generation/docker-utils/src/runDocker.ts b/packages/cli/generation/local-generation/docker-utils/src/runDocker.ts index 24e5252df71..bc0a264d581 100644 --- a/packages/cli/generation/local-generation/docker-utils/src/runDocker.ts +++ b/packages/cli/generation/local-generation/docker-utils/src/runDocker.ts @@ -1,3 +1,4 @@ +import { Logger } from "@fern-api/logger"; import Docker from "dockerode"; import { writeFile } from "fs/promises"; import { Writable } from "stream"; @@ -5,6 +6,7 @@ import tmp from "tmp-promise"; export declare namespace runDocker { export interface Args { + logger: Logger; imageName: string; args?: string[]; binds?: string[]; @@ -18,6 +20,7 @@ export declare namespace runDocker { } export async function runDocker({ + logger, imageName, args, binds, @@ -25,7 +28,8 @@ export async function runDocker({ removeAfterCompletion = false }: runDocker.Args): Promise { const docker = new Docker(); - const tryRun = () => tryRunDocker({ docker, imageName, args, binds, removeAfterCompletion, writeLogsToFile }); + const tryRun = () => + tryRunDocker({ logger, docker, imageName, args, binds, removeAfterCompletion, writeLogsToFile }); try { await tryRun(); } catch (e) { @@ -41,6 +45,7 @@ export async function runDocker({ // may throw a 404 if the image hasn't been downloaded async function tryRunDocker({ + logger, docker, imageName, args, @@ -48,6 +53,7 @@ async function tryRunDocker({ removeAfterCompletion, writeLogsToFile }: { + logger: Logger; docker: Docker; imageName: string; args?: string[]; @@ -81,14 +87,14 @@ async function tryRunDocker({ throw status.Error; } + if (writeLogsToFile) { + const tmpFile = await tmp.file(); + await writeFile(tmpFile.path, logs); + logger.info(`Generator logs here: ${tmpFile.path}`); + } + if (status.StatusCode !== 0) { - if (writeLogsToFile) { - const tmpFile = await tmp.file(); - await writeFile(tmpFile.path, logs); - throw new Error(`Docker exited with a non-zero exit code. Logs here: ${tmpFile.path}`); - } else { - throw new Error("Docker exited with a non-zero exit code."); - } + throw new Error("Docker exited with a non-zero exit code."); } } diff --git a/packages/cli/generation/local-generation/local-workspace-runner/src/runGenerator.ts b/packages/cli/generation/local-generation/local-workspace-runner/src/runGenerator.ts index 21bcee879a2..1b3de03dd86 100644 --- a/packages/cli/generation/local-generation/local-workspace-runner/src/runGenerator.ts +++ b/packages/cli/generation/local-generation/local-workspace-runner/src/runGenerator.ts @@ -193,6 +193,7 @@ export async function runGenerator({ absolutePathToIr, absolutePathToWriteConfigJson, keepDocker, + context, generatorInvocation, writeUnitTests, generateOauthClients, @@ -238,6 +239,7 @@ export async function runGenerator({ } await runDocker({ + logger: context.logger, imageName, args: [DOCKER_GENERATOR_CONFIG_PATH], binds, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b02cd8e0f1..bdd7acdfd50 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4286,6 +4286,9 @@ importers: '@fern-api/fs-utils': specifier: workspace:* version: link:../../../../commons/fs-utils + '@fern-api/logger': + specifier: workspace:* + version: link:../../../logger dockerode: specifier: ^4.0.2 version: 4.0.2