Select Git revision
artifacts.ts
-
Michael Kriese authoredMichael Kriese authored
artifacts.ts 5.66 KiB
import { join } from 'path';
import { quote } from 'shlex';
import { TEMPORARY_ERROR } from '../../../constants/error-messages';
import { logger } from '../../../logger';
import { exec } from '../../../util/exec';
import type { ExecOptions } from '../../../util/exec/types';
import {
ensureCacheDir,
getSiblingFileName,
outputFile,
readLocalFile,
remove,
writeLocalFile,
} from '../../../util/fs';
import * as hostRules from '../../../util/host-rules';
import { regEx } from '../../../util/regex';
import { NugetDatasource } from '../../datasource/nuget';
import { parseRegistryUrl } from '../../datasource/nuget/common';
import type {
UpdateArtifact,
UpdateArtifactsConfig,
UpdateArtifactsResult,
} from '../types';
import { getDependentPackageFiles } from './package-tree';
import {
getConfiguredRegistries,
getDefaultRegistries,
getRandomString,
} from './util';
async function addSourceCmds(
packageFileName: string,
config: UpdateArtifactsConfig,
nugetConfigFile: string
): Promise<string[]> {
const registries =
(await getConfiguredRegistries(packageFileName)) || getDefaultRegistries();
const result: string[] = [];
for (const registry of registries) {
const { username, password } = hostRules.find({
hostType: NugetDatasource.id,
url: registry.url,
});
const registryInfo = parseRegistryUrl(registry.url);
let addSourceCmd = `dotnet nuget add source ${quote(
registryInfo.feedUrl
)} --configfile ${quote(nugetConfigFile)}`;
if (registry.name) {
// Add name for registry, if known.
addSourceCmd += ` --name ${quote(registry.name)}`;
}
if (username && password) {
// Add registry credentials from host rules, if configured.
addSourceCmd += ` --username ${quote(username)} --password ${quote(
password
)} --store-password-in-clear-text`;
}
result.push(addSourceCmd);
}
return result;
}
async function runDotnetRestore(
packageFileName: string,
dependentPackageFileNames: string[],
config: UpdateArtifactsConfig
): Promise<void> {
const execOptions: ExecOptions = {
docker: {
image: 'dotnet',