mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-27 07:50:47 +00:00
b2d3b64c48
* refactor(lint): enforce err key for errors in logger metadata * refactor(lint): flag error message and stack strings in logger-err-key
84 lines
2.2 KiB
TypeScript
84 lines
2.2 KiB
TypeScript
import { isNullOrUndefined } from '@sindresorhus/is';
|
|
import { logger } from '../../../logger/index.ts';
|
|
import { regEx } from '../../../util/regex.ts';
|
|
import { parseSingleYaml } from '../../../util/yaml.ts';
|
|
import { GoDatasource } from '../../datasource/go/index.ts';
|
|
import type {
|
|
ExtractConfig,
|
|
PackageDependency,
|
|
PackageFileContent,
|
|
} from '../types.ts';
|
|
import { type Module, OCBConfig } from './schema.ts';
|
|
|
|
export function extractPackageFile(
|
|
content: string,
|
|
packageFile: string,
|
|
_config?: ExtractConfig,
|
|
): PackageFileContent | null {
|
|
let definition: OCBConfig | null = null;
|
|
try {
|
|
const yaml = parseSingleYaml(content);
|
|
const parsed = OCBConfig.safeParse(yaml);
|
|
if (!parsed.success) {
|
|
logger.trace(
|
|
{ packageFile, err: parsed.error },
|
|
'Failed to parse OCB schema',
|
|
);
|
|
return null;
|
|
}
|
|
|
|
definition = parsed.data;
|
|
} catch (error) {
|
|
logger.debug(
|
|
{ packageFile, err: error },
|
|
'OCB manager failed to parse file as YAML',
|
|
);
|
|
return null;
|
|
}
|
|
|
|
const deps: PackageDependency[] = [];
|
|
if (definition.dist.otelcol_version) {
|
|
deps.push({
|
|
datasource: GoDatasource.id,
|
|
depType: 'collector',
|
|
depName: 'go.opentelemetry.io/collector',
|
|
currentValue: definition.dist.otelcol_version,
|
|
extractVersion: '^v(?<version>\\S+)',
|
|
});
|
|
}
|
|
|
|
deps.push(...processModule(definition.connectors, 'connectors'));
|
|
deps.push(...processModule(definition.exporters, 'exports'));
|
|
deps.push(...processModule(definition.extensions, 'extensions'));
|
|
deps.push(...processModule(definition.processors, 'processors'));
|
|
deps.push(...processModule(definition.providers, 'providers'));
|
|
deps.push(...processModule(definition.receivers, 'receivers'));
|
|
|
|
return {
|
|
packageFileVersion: definition.dist.version,
|
|
deps,
|
|
};
|
|
}
|
|
|
|
export function processModule(
|
|
module: Module,
|
|
depType: string,
|
|
): PackageDependency[] {
|
|
const deps: PackageDependency[] = [];
|
|
if (isNullOrUndefined(module)) {
|
|
return deps;
|
|
}
|
|
|
|
for (const element of module) {
|
|
const [depName, currentValue] = element.gomod.trim().split(regEx(/\s+/));
|
|
deps.push({
|
|
datasource: GoDatasource.id,
|
|
depType,
|
|
depName,
|
|
currentValue,
|
|
});
|
|
}
|
|
|
|
return deps;
|
|
}
|