Files
semantic-release/lib/definitions/plugins.js
T
Olabode Lawal-Shittabey db8ffaad90 fix(revert): next (#4200)
* Revert "docs: update README to include information about the new core engine integration"

This reverts commit 4e476dee14.

* Revert "fix(code-quality): add missing comma in context object for consistency"

This reverts commit 493d6cdaa1.

* Revert "refactor: replace direct logger and env-ci replacements with a mockCore function for better test organization"

This reverts commit d05e160668.

* Revert "test: add tests for core delegation and dry-run policy handling"

This reverts commit 4f464a72ae.

* Revert "refactor: integrate `core`; remove unused imports and restructuring the main export function"

This reverts commit 3f5d1b785b.

* Revert "refactor: remove obsolete release type constants and notes separator"

This reverts commit 7d71f2eb14.

* Revert "refactor: remove obsolete test files for logger, git, sensitive data handling, and utility functions"

This reverts commit 1ae1a19cdf.

* Revert "refactor: remove obsolete Git-related utilities and logging functions"

This reverts commit bedddc4091.

* Revert "refactor(tests): remove obsolete tests for plugins and verification"

This reverts commit 7172195d12.

* Revert "refactor: remove obsolete branch, error, and plugin definitions"

This reverts commit 51d1f5f9b2.

* Merge branch 'master' of https://github.com/semantic-release/semantic-release into fix(revert)/next

* Revert "Merge branch 'master' of https://github.com/semantic-release/semantic-release into fix(revert)/next"

This reverts commit bbfdc36be6.
2026-06-09 16:08:49 -07:00

109 lines
3.5 KiB
JavaScript

/* eslint require-atomic-updates: off */
import { isPlainObject, isString } from "lodash-es";
import { getGitHead } from "../git.js";
import hideSensitive from "../hide-sensitive.js";
import { hideSensitiveValues } from "../utils.js";
import { RELEASE_NOTES_SEPARATOR, RELEASE_TYPE } from "./constants.js";
export default {
verifyConditions: {
required: false,
dryRun: true,
pipelineConfig: () => ({ settleAll: true }),
},
analyzeCommits: {
default: ["@semantic-release/commit-analyzer"],
required: true,
dryRun: true,
outputValidator: (output) => !output || RELEASE_TYPE.includes(output),
preprocess: ({ commits, ...inputs }) => ({
...inputs,
commits: commits.filter((commit) => !/\[skip\s+release]|\[release\s+skip]/i.test(commit.message)),
}),
postprocess: (results) =>
RELEASE_TYPE[
results.reduce((highest, result) => {
const typeIndex = RELEASE_TYPE.indexOf(result);
return typeIndex > highest ? typeIndex : highest;
}, -1)
],
},
verifyRelease: {
required: false,
dryRun: true,
pipelineConfig: () => ({ settleAll: true }),
},
generateNotes: {
required: false,
dryRun: true,
outputValidator: (output) => !output || isString(output),
pipelineConfig: () => ({
getNextInput: ({ nextRelease, ...context }, notes) => ({
...context,
nextRelease: {
...nextRelease,
notes: `${nextRelease.notes ? `${nextRelease.notes}${RELEASE_NOTES_SEPARATOR}` : ""}${notes}`,
},
}),
}),
postprocess: (results, { env }) => hideSensitive(env)(results.filter(Boolean).join(RELEASE_NOTES_SEPARATOR)),
},
prepare: {
required: false,
dryRun: false,
pipelineConfig: ({ generateNotes }) => ({
getNextInput: async (context) => {
const newGitHead = await getGitHead({ cwd: context.cwd });
// If previous prepare plugin has created a commit (gitHead changed)
if (context.nextRelease.gitHead !== newGitHead) {
context.nextRelease.gitHead = newGitHead;
// Regenerate the release notes
context.nextRelease.notes = await generateNotes(context);
}
// Call the next prepare plugin with the updated `nextRelease`
return context;
},
}),
},
publish: {
required: false,
dryRun: false,
outputValidator: (output) => !output || isPlainObject(output),
pipelineConfig: () => ({
// Add `nextRelease` and plugin properties to published release
transform: (release, step, { nextRelease }) => ({
...(release === false ? {} : nextRelease),
...release,
...step,
}),
}),
},
addChannel: {
required: false,
dryRun: false,
outputValidator: (output) => !output || isPlainObject(output),
pipelineConfig: () => ({
// Add `nextRelease` and plugin properties to published release
transform: (release, step, { nextRelease }) => ({
...(release === false ? {} : nextRelease),
...release,
...step,
}),
}),
},
success: {
required: false,
dryRun: false,
pipelineConfig: () => ({ settleAll: true }),
preprocess: ({ releases, env, ...inputs }) => ({ ...inputs, env, releases: hideSensitiveValues(env, releases) }),
},
fail: {
required: false,
dryRun: false,
pipelineConfig: () => ({ settleAll: true }),
preprocess: ({ errors, env, ...inputs }) => ({ ...inputs, env, errors: hideSensitiveValues(env, errors) }),
},
};