import { logger } from '../../../logger/index.ts'; import { newlineRegex, regEx } from '../../../util/regex.ts'; import { getDep } from '../dockerfile/extract.ts'; import type { ExtractConfig, PackageDependency, PackageFileContent, } from '../types.ts'; export function extractPackageFile( content: string, packageFile: string, config: ExtractConfig, ): PackageFileContent | null { logger.trace(`ansible.extractPackageFile(${packageFile})`); let deps: PackageDependency[] = []; const re = regEx(/^\s*image:\s*'?"?(?[^\s'"]+)'?"?\s*$/); for (const line of content.split(newlineRegex)) { const match = re.exec(line); if (match) { const currentFrom = match.groups!.image; const dep = getDep(currentFrom, true, config.registryAliases); logger.debug( { depName: dep.depName, currentValue: dep.currentValue, currentDigest: dep.currentDigest, }, 'Docker image inside ansible', ); deps.push(dep); } } deps = deps.filter((dep) => !dep.currentValue?.includes('${')); if (!deps.length) { return null; } return { deps }; }