Select Git revision
common.ts 5.27 KiB
import is from '@sindresorhus/is';
import { logger } from '../../logger';
import { filterMap } from '../../util/filter-map';
import { regEx } from '../../util/regex';
import { defaultVersioning } from '../versioning';
import * as allVersioning from '../versioning';
import datasources from './api';
import { CustomDatasource } from './custom';
import type {
DatasourceApi,
GetPkgReleasesConfig,
ReleaseResult,
} from './types';
export function getDatasourceFor(datasource: string): DatasourceApi | null {
if (datasource?.startsWith('custom.')) {
return getDatasourceFor(CustomDatasource.id);
}
return datasources.get(datasource) ?? null;
}
export function getDefaultVersioning(
datasourceName: string | undefined
): string {
if (!datasourceName) {
return defaultVersioning.id;
}
const datasource = getDatasourceFor(datasourceName);
if (!datasource) {
logger.warn({ datasourceName }, 'Missing datasource!');
return defaultVersioning.id;
}
if (!datasource.defaultVersioning) {
return defaultVersioning.id;
}
return datasource.defaultVersioning;
}
export function isGetPkgReleasesConfig(
input: unknown
): input is GetPkgReleasesConfig {
return (
is.nonEmptyStringAndNotWhitespace(
(input as GetPkgReleasesConfig).datasource
) &&
is.nonEmptyStringAndNotWhitespace(
(input as GetPkgReleasesConfig).packageName
)
);
}
export function applyExtractVersion(
releaseResult: ReleaseResult,
extractVersion: string | undefined
): ReleaseResult {
if (!extractVersion) {
return releaseResult;
}
const extractVersionRegEx = regEx(extractVersion);
releaseResult.releases = filterMap(releaseResult.releases, (release) => {
const version = extractVersionRegEx.exec(release.version)?.groups?.version;
if (!version) {
return null;
}