@gitlab/semantic-release-merge-request-analyzer
Version:
Semantic release plugin to determine version based on GitLab merge request labels
59 lines (51 loc) • 1.83 kB
JavaScript
import verifyConditionsImpl from "./src/verify-conditions.js";
import analyzeCommitsImpl from "./src/analyze-commits.js";
import generateNotesImpl from "./src/generate-notes.js";
// Keep track of whether verification was successful
let verified = false;
/**
* Verify that the environment variables required for GitLab API access are present.
*
* @param {Object} pluginConfig The plugin configuration.
* @param {Object} context The semantic-release context.
* @returns {Promise<void>} A Promise that resolves if the verification is successful.
*/
export async function verifyConditions(pluginConfig, context) {
await verifyConditionsImpl(pluginConfig, context);
verified = true;
}
/**
* Analyzes commits to determine the release type.
*
* @param {Object} pluginConfig The plugin configuration.
* @param {Object} context The semantic-release context.
* @returns {Promise<string|null>} The release type or null if no release should be created.
*/
export async function analyzeCommits(pluginConfig, context) {
// If verifyConditions wasn't called, run verification now
if (!verified) {
await verifyConditionsImpl(pluginConfig, context);
verified = true;
}
return analyzeCommitsImpl(pluginConfig, context);
}
/**
* Generates release notes based on merge requests.
*
* @param {Object} pluginConfig The plugin configuration.
* @param {Object} context The semantic-release context.
* @returns {Promise<string>} The generated release notes.
*/
export async function generateNotes(pluginConfig, context) {
// If verifyConditions wasn't called, run verification now
if (!verified) {
await verifyConditionsImpl(pluginConfig, context);
verified = true;
}
return generateNotesImpl(pluginConfig, context);
}
export default {
verifyConditions,
analyzeCommits,
generateNotes,
};