From 19746a8685cbf073b6651f94643b7951ef4c1dca Mon Sep 17 00:00:00 2001 From: Zack Pollard Date: Wed, 23 Apr 2025 16:31:18 +0100 Subject: [PATCH] fix: cache build versions (#17811) --- .../repositories/server-info.repository.ts | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/server/src/repositories/server-info.repository.ts b/server/src/repositories/server-info.repository.ts index deb24123d0..cc7e1770fc 100644 --- a/server/src/repositories/server-info.repository.ts +++ b/server/src/repositories/server-info.repository.ts @@ -73,26 +73,32 @@ export class ServerInfoRepository { } } + buildVersions?: ServerBuildVersions; + async getBuildVersions(): Promise { - const { nodeVersion, resourcePaths } = this.configRepository.getEnv(); + if (!this.buildVersions) { + const { nodeVersion, resourcePaths } = this.configRepository.getEnv(); - const [nodejsOutput, ffmpegOutput, magickOutput] = await Promise.all([ - maybeFirstLine('node --version'), - maybeFirstLine('ffmpeg -version'), - maybeFirstLine('convert --version'), - ]); + const [nodejsOutput, ffmpegOutput, magickOutput] = await Promise.all([ + maybeFirstLine('node --version'), + maybeFirstLine('ffmpeg -version'), + maybeFirstLine('convert --version'), + ]); - const lockfile = await readFile(resourcePaths.lockFile) - .then((buffer) => JSON.parse(buffer.toString())) - .catch(() => this.logger.warn(`Failed to read ${resourcePaths.lockFile}`)); + const lockfile = await readFile(resourcePaths.lockFile) + .then((buffer) => JSON.parse(buffer.toString())) + .catch(() => this.logger.warn(`Failed to read ${resourcePaths.lockFile}`)); - return { - nodejs: nodejsOutput || nodeVersion || '', - exiftool: await exiftool.version(), - ffmpeg: getLockfileVersion('ffmpeg', lockfile) || ffmpegOutput.replaceAll('ffmpeg version', '') || '', - libvips: getLockfileVersion('libvips', lockfile) || sharp.versions.vips, - imagemagick: - getLockfileVersion('imagemagick', lockfile) || magickOutput.replaceAll('Version: ImageMagick ', '') || '', - }; + this.buildVersions = { + nodejs: nodejsOutput || nodeVersion || '', + exiftool: await exiftool.version(), + ffmpeg: getLockfileVersion('ffmpeg', lockfile) || ffmpegOutput.replaceAll('ffmpeg version', '') || '', + libvips: getLockfileVersion('libvips', lockfile) || sharp.versions.vips, + imagemagick: + getLockfileVersion('imagemagick', lockfile) || magickOutput.replaceAll('Version: ImageMagick ', '') || '', + }; + } + + return this.buildVersions; } }