UNPKG

@droidsolutions-oss/semantic-release-nuget

Version:

Semantic Release plugin to create and publish NuGet packages.

39 lines (38 loc) 1.77 kB
import SRError from "@semantic-release/error"; import { execa } from "execa"; import { resolve } from "path"; import { isExecaError, packFailed } from "./Helper.mjs"; export const prepare = async (pluginConfig, context) => { const dotnet = pluginConfig.dotnet || "dotnet"; try { pluginConfig.projectPath = Array.isArray(pluginConfig.projectPath) ? pluginConfig.projectPath : [pluginConfig.projectPath]; for (const projectPath of pluginConfig.projectPath) { const project = resolve(projectPath); const cliArgs = ["pack", project, "-c", "Release", "-o", "out"]; if (pluginConfig.includeSource === true) { cliArgs.push("--include-source"); } if (pluginConfig.includeSymbols === true) { cliArgs.push("--include-symbols", "-p:SymbolPackageFormat=snupkg"); } if (pluginConfig.usePackageVersion === true) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion cliArgs.push(`-p:PackageVersion=${context.nextRelease.version}`); } if (pluginConfig.dotnetVerbosity) { cliArgs.push("-v", pluginConfig.dotnetVerbosity); } context.logger.log(`running command "${dotnet} ${cliArgs.join(" ")}" ...`); await execa(dotnet, cliArgs, { stdio: "inherit" }); } } catch (err) { context.logger.error(`${dotnet} pack failed: ${err.message}`); if (isExecaError(err)) { throw new SRError(`${dotnet} pack failed with exit code ${err.exitCode}`, packFailed, err.command); } throw new SRError(`${dotnet} pack failed: ${err.message}`, packFailed); } };