@droidsolutions-oss/semantic-release-nuget
Version:
Semantic Release plugin to create and publish NuGet packages.
39 lines (38 loc) • 1.77 kB
JavaScript
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);
}
};