Skip to content
Snippets Groups Projects
Select Git revision
21 results Searching

index.ts

Blame
  • 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',