Select Git revision
influx-metrics.spec.js
index.ts 3.68 KiB
import pMap from 'p-map';
import { getAdminConfig } from '../../../config/admin';
import { GetPkgReleasesConfig, getPkgReleases } from '../../../datasource';
import { logger } from '../../../logger';
import { get as getVersioning } from '../../../versioning';
import type {
UpdateArtifact,
UpdateArtifactsConfig,
UpdateArtifactsResult,
} from '../../types';
import hash from './hash';
import type { ProviderLock, ProviderLockUpdate } from './types';
import {
extractLocks,
isPinnedVersion,
readLockFile,
writeLockUpdates,
} from './util';
async function updateAllLocks(
locks: ProviderLock[],
config: UpdateArtifactsConfig
): Promise<ProviderLockUpdate[]> {
const { cacheDir } = getAdminConfig();
const updates = await pMap(
locks,
async (lock) => {
const updateConfig: GetPkgReleasesConfig = {
versioning: 'hashicorp',
datasource: 'terraform-provider',
depName: lock.lookupName,
};
const { releases } = await getPkgReleases(updateConfig);
const versioning = getVersioning(updateConfig.versioning);
const versionsList = releases.map((release) => release.version);
const newVersion = versioning.getSatisfyingVersion(
versionsList,
lock.constraints
);
// if the new version is the same as the last, signal that no update is needed
if (newVersion === lock.version) {
return null;
}
const update: ProviderLockUpdate = {
newVersion,
newConstraint: lock.constraints,
newHashes: await hash(lock.lookupName, newVersion, cacheDir),
...lock,
};
return update;
},
{ concurrency: 4 } // allow to look up 4 lock in parallel
);
return updates.filter(Boolean);
}
export async function updateArtifacts({
packageFileName,
updatedDeps,
config,
}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {
logger.debug(`terraform.updateArtifacts(${packageFileName})`);
// TODO remove experimental flag, if functionality is confirmed
if (!process.env.RENOVATE_X_TERRAFORM_LOCK_FILE) {
logger.debug(
`terraform.updateArtifacts: skipping updates. Experimental feature not activated`