const packageFileWorker = require('../../package-file'); const { mergeChildConfig, filterConfig } = require('../../../config'); const { detectSemanticCommits } = require('./semantic'); async function determineRepoUpgrades(config) { logger.debug('determineRepoUpgrades()'); logger.trace({ config }); let upgrades = []; logger.debug(`Found ${config.packageFiles.length} package files`); // Iterate through repositories sequentially for (const packageFile of config.packageFiles) { logger.trace({ packageFile }, 'Getting packageFile config'); let packageFileConfig = mergeChildConfig(config, packageFile); packageFileConfig = filterConfig(packageFileConfig, 'packageFile'); if (packageFileConfig.packageFile.endsWith('package.json')) { logger.info( { packageFile: packageFileConfig.packageFile }, 'Renovating package.json dependencies' ); upgrades = upgrades.concat( await packageFileWorker.renovatePackageFile(packageFileConfig) ); } else if (packageFileConfig.packageFile.endsWith('package.js')) { logger.info('Renovating package.js (meteor) dependencies'); upgrades = upgrades.concat( await packageFileWorker.renovateMeteorPackageFile(packageFileConfig) ); } else if (packageFileConfig.packageFile.endsWith('Dockerfile')) { logger.info('Renovating Dockerfile FROM'); upgrades = upgrades.concat( await packageFileWorker.renovateDockerfile(packageFileConfig) ); } else if (packageFileConfig.packageFile.endsWith('.travis.yml')) { logger.info('Renovating .travis.yml node_js versions'); upgrades = upgrades.concat( await packageFileWorker.renovateNodeFile(packageFileConfig) ); } else if (packageFileConfig.packageFile.endsWith('WORKSPACE')) { logger.info('Renovating bazel WORKSPACE dependencies'); upgrades = upgrades.concat( await packageFileWorker.renovateBazelFile(packageFileConfig) ); } } let semanticCommits; if (upgrades.length) { semanticCommits = await detectSemanticCommits(config); } // Sanitize depNames upgrades = upgrades.map(upgrade => ({ ...upgrade, semanticCommits, depNameSanitized: upgrade.depName ? upgrade.depName .replace('@types/', '') .replace('@', '') .replace('/', '-') .replace(/\s+/g, '-') .toLowerCase() : undefined, })); logger.debug('returning upgrades'); return { ...config, upgrades }; } module.exports = { determineRepoUpgrades };