mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-26 15:31:53 +00:00
c41b46bac3
* ci(linter): add renovate/logger-static-message rule Adds a custom oxlint rule that enforces a static msg component for logger.warn/error/fatal calls (including logger.once variants) so the messages can be grouped in metrics and error catching services, per docs/development/best-practices.md. It also flags metadata properties named 'error' that hold error-ish values, because the bunyan serializer only handles the 'err' key. The rule is enabled as an error for lib/ production code and disabled for spec files. All 33 pre-existing violations are fixed by moving interpolated values into the metadata object, making messages static, and renaming 'error' metadata keys to 'err'. Affected log-message assertions in co-located specs are updated accordingly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * ci: ignore validator output * fixup new merged in log messages --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
71 lines
1.6 KiB
TypeScript
71 lines
1.6 KiB
TypeScript
import { logger } from '../../logger/index.ts';
|
|
import type {
|
|
LookupUpdateConfig,
|
|
UpdateResult,
|
|
} from '../../workers/repository/process/lookup/types.ts';
|
|
import { getDatasourceFor } from './common.ts';
|
|
import { Datasource } from './datasource.ts';
|
|
import type { Release } from './types.ts';
|
|
|
|
type Config = Partial<LookupUpdateConfig & UpdateResult>;
|
|
|
|
export async function postprocessRelease(
|
|
config: Config,
|
|
release: Release,
|
|
): Promise<Release | null> {
|
|
const { datasource } = config;
|
|
|
|
const ds = datasource && getDatasourceFor(datasource);
|
|
if (!ds) {
|
|
logger.once.warn(
|
|
{ datasource },
|
|
'Failed to resolve datasource during release postprocessing',
|
|
);
|
|
return release;
|
|
}
|
|
|
|
if (
|
|
ds.constructor.prototype.postprocessRelease ===
|
|
Datasource.prototype.postprocessRelease
|
|
) {
|
|
return release;
|
|
}
|
|
|
|
const { packageName } = config;
|
|
if (!packageName) {
|
|
logger.once.warn(
|
|
{ datasource },
|
|
'Release postprocessing is not supported for empty `packageName` field',
|
|
);
|
|
return release;
|
|
}
|
|
|
|
const registryUrl = config.registryUrl ?? config.registryUrls?.at(0) ?? null;
|
|
|
|
try {
|
|
const result = await ds.postprocessRelease(
|
|
{ packageName, registryUrl },
|
|
release,
|
|
);
|
|
|
|
if (result === 'reject') {
|
|
logger.debug(
|
|
{
|
|
datasource,
|
|
packageName,
|
|
registryUrl,
|
|
version: release.version,
|
|
versionOrig: release.versionOrig,
|
|
},
|
|
'Rejected release',
|
|
);
|
|
return null;
|
|
}
|
|
|
|
return result;
|
|
} catch (err) {
|
|
logger.once.warn({ err, datasource }, 'Release interceptor failed');
|
|
return release;
|
|
}
|
|
}
|