Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

install.go

Blame
  • 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;
        }