From 4b8ef21a91e82dda81cab69bd398edabe5910332 Mon Sep 17 00:00:00 2001 From: Norbert Szulc <norbert@icetek.io> Date: Fri, 9 Feb 2024 11:57:57 +0100 Subject: [PATCH] refactor(manager/pip-compile): Refactor updateArtifacts method (#27169) --- lib/modules/manager/pip-compile/artifacts.ts | 85 +++++++++++--------- 1 file changed, 49 insertions(+), 36 deletions(-) diff --git a/lib/modules/manager/pip-compile/artifacts.ts b/lib/modules/manager/pip-compile/artifacts.ts index d76b8b2d61..9e3eeaf645 100644 --- a/lib/modules/manager/pip-compile/artifacts.ts +++ b/lib/modules/manager/pip-compile/artifacts.ts @@ -65,56 +65,69 @@ export async function updateArtifacts({ config, }: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> { const outputFileName = inputFileName.replace(regEx(/(\.in)?$/), '.txt'); - logger.debug( - `pipCompile.updateArtifacts(${inputFileName}->${outputFileName})`, - ); - const existingOutput = await readLocalFile(outputFileName, 'utf8'); - if (!existingOutput) { - logger.debug('No pip-compile output file found'); + config.lockFiles = [outputFileName]; + // TODO: remove above and below line and use config.lockFiles directly in the next PR + // istanbul ignore if + if (!config.lockFiles) { + logger.warn( + { packageFileName: inputFileName }, + 'pip-compile: No lock files associated with a package file', + ); return null; } - try { - await writeLocalFile(inputFileName, newInputContent); - if (config.isLockFileMaintenance) { - await deleteLocalFile(outputFileName); - } - const cmd = constructPipCompileCmd( - existingOutput, - inputFileName, - outputFileName, - ); - const execOptions = await getExecOptions(config, inputFileName); - logger.trace({ cmd }, 'pip-compile command'); - await exec(cmd, execOptions); - const status = await getRepoStatus(); - if (!status?.modified.includes(outputFileName)) { + logger.debug( + `pipCompile.updateArtifacts(${inputFileName}->${JSON.stringify( + config.lockFiles, + )})`, + ); + const result: UpdateArtifactsResult[] = []; + for (const outputFileName of config.lockFiles) { + const existingOutput = await readLocalFile(outputFileName, 'utf8'); + if (!existingOutput) { + logger.debug('pip-compile: No output file found'); return null; } - logger.debug('Returning updated pip-compile result'); - return [ - { + try { + await writeLocalFile(inputFileName, newInputContent); + // TODO(not7cd): use --upgrade option instead deleting + if (config.isLockFileMaintenance) { + await deleteLocalFile(outputFileName); + } + const cmd = constructPipCompileCmd( + existingOutput, + inputFileName, + outputFileName, + ); + const execOptions = await getExecOptions(config, inputFileName); + logger.trace({ cmd }, 'pip-compile command'); + await exec(cmd, execOptions); + const status = await getRepoStatus(); + if (!status?.modified.includes(outputFileName)) { + return null; + } + result.push({ file: { type: 'addition', path: outputFileName, contents: await readLocalFile(outputFileName, 'utf8'), }, - }, - ]; - } catch (err) { - // istanbul ignore if - if (err.message === TEMPORARY_ERROR) { - throw err; - } - logger.debug({ err }, 'Failed to pip-compile'); - return [ - { + }); + } catch (err) { + // istanbul ignore if + if (err.message === TEMPORARY_ERROR) { + throw err; + } + logger.debug({ err }, 'pip-compile: Failed to run command'); + result.push({ artifactError: { lockFile: outputFileName, stderr: err.message, }, - }, - ]; + }); + } } + logger.debug('pip-compile: Returning updated output file(s)'); + return result; } export function extractResolver(argument: string): string | null { -- GitLab