Select Git revision
fetch.ts 4.13 KiB
import { hrtime } from 'process';
import pAll from 'p-all';
import {
ManagerConfig,
RenovateConfig,
getManagerConfig,
mergeChildConfig,
} from '../../../config';
import { getDefaultConfig } from '../../../datasource';
import { logger } from '../../../logger';
import { getPackageUpdates } from '../../../manager';
import { PackageDependency, PackageFile } from '../../../manager/common';
import { SkipReason } from '../../../types';
import { clone } from '../../../util/clone';
import { applyPackageRules } from '../../../util/package-rules';
import { LookupUpdateConfig, lookupUpdates } from './lookup';
async function fetchDepUpdates(
packageFileConfig: ManagerConfig & PackageFile,
indep: PackageDependency
): Promise<PackageDependency> {
const dep = clone(indep);
dep.updates = [];
if (dep.skipReason) {
return dep;
}
const { manager, packageFile } = packageFileConfig;
const { depName, currentValue } = dep;
// TODO: fix types
let depConfig = mergeChildConfig(packageFileConfig, dep);
const datasourceDefaultConfig = await getDefaultConfig(depConfig.datasource);
depConfig = mergeChildConfig(depConfig, datasourceDefaultConfig);
depConfig = applyPackageRules(depConfig);
if (depConfig.ignoreDeps.includes(depName)) {
logger.debug({ dependency: dep.depName }, 'Dependency is ignored');
dep.skipReason = SkipReason.Ignored;
} else if (
depConfig.internalPackages &&
depConfig.internalPackages.includes(depName)
) {
logger.debug(
{ dependency: dep.depName },
'Dependency is ignored due to being internal'
);
dep.skipReason = SkipReason.InternalPackage;
} else if (depConfig.enabled === false) {
logger.debug({ dependency: dep.depName }, 'Dependency is disabled');
dep.skipReason = SkipReason.Disabled;
} else {
if (depConfig.datasource) {
Object.assign(dep, await lookupUpdates(depConfig as LookupUpdateConfig));
} else {
dep.updates = await getPackageUpdates(manager, depConfig);
}
dep.updates = dep.updates || [];
// istanbul ignore if
if (dep.updates.length) {
logger.trace(
{ dependency: depName },
`${dep.updates.length} result(s): ${dep.updates.map(
(upgrade) => upgrade.newValue
)}`
);
}
logger.trace({
packageFile,
manager,
depName,
currentValue,
updates: dep.updates,