mirror of https://github.com/renovatebot/renovate
77 lines
2.0 KiB
TypeScript
77 lines
2.0 KiB
TypeScript
import is from '@sindresorhus/is';
|
|
import { logger } from '../../../logger';
|
|
import {
|
|
extractAllPackageFiles,
|
|
extractPackageFile,
|
|
get,
|
|
} from '../../../modules/manager';
|
|
import type { PackageFile } from '../../../modules/manager/types';
|
|
import { readLocalFile } from '../../../util/fs';
|
|
import type { WorkerExtractConfig } from '../../types';
|
|
|
|
function massageDepNames(packageFiles: PackageFile[] | null): void {
|
|
if (packageFiles) {
|
|
for (const packageFile of packageFiles) {
|
|
for (const dep of packageFile.deps) {
|
|
if (dep.packageName && !dep.depName) {
|
|
dep.depName = dep.packageName;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
export async function getManagerPackageFiles(
|
|
config: WorkerExtractConfig,
|
|
): Promise<PackageFile[] | null> {
|
|
const { enabled, manager, fileList } = config;
|
|
logger.trace(`getPackageFiles(${manager})`);
|
|
if (!enabled) {
|
|
logger.debug(`${manager} is disabled`);
|
|
return [];
|
|
}
|
|
// istanbul ignore else
|
|
if (is.nonEmptyArray(fileList)) {
|
|
logger.debug(
|
|
`Matched ${
|
|
fileList.length
|
|
} file(s) for manager ${manager}: ${fileList.join(', ')}`,
|
|
);
|
|
} else {
|
|
return [];
|
|
}
|
|
// Extract package files synchronously if manager requires it
|
|
if (get(manager, 'extractAllPackageFiles')) {
|
|
const allPackageFiles = await extractAllPackageFiles(
|
|
manager,
|
|
config,
|
|
fileList,
|
|
);
|
|
massageDepNames(allPackageFiles);
|
|
return allPackageFiles;
|
|
}
|
|
const packageFiles: PackageFile[] = [];
|
|
for (const packageFile of fileList) {
|
|
const content = await readLocalFile(packageFile, 'utf8');
|
|
// istanbul ignore else
|
|
if (content) {
|
|
const res = await extractPackageFile(
|
|
manager,
|
|
content,
|
|
packageFile,
|
|
config,
|
|
);
|
|
if (res) {
|
|
packageFiles.push({
|
|
...res,
|
|
packageFile,
|
|
});
|
|
}
|
|
} else {
|
|
logger.debug(`${packageFile} has no content`);
|
|
}
|
|
}
|
|
massageDepNames(packageFiles);
|
|
return packageFiles;
|
|
}
|