UNPKG

@halospv3/hce.shared-config

Version:

Automate commit message quality, changelogs, and CI/CD releases. Exports a semantic-release shareable configuration deserialized from this package's '.releaserc.yml'. Shared resources for .NET projects are also distributed with this package.

68 lines (61 loc) 2.68 kB
'use strict'; const GitPluginId = '@semantic-release/git'; /** As specified at https://github.com/semantic-release/git#options */ const DefaultOptions = { assets: ['README.md', 'CHANGELOG.md', 'package.json', 'package-lock.json', 'npm-shrinkwrap.json'], message: 'chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}' }; function gitAssetsToArray(assets) { if (assets === undefined || assets === false) return []; if (Array.isArray(assets)) return assets; if (typeof assets === 'string') return [assets]; return assets.path === 'string' ? [assets.path] : []; } /** * https://github.com/semantic-release/git#options * * This plugin may be deprecated at a later date. * Why do you need to commit during release? * If you don't need to update a changelog or version in a file, then you don't need this. * * @returns A {@link PluginSpec} array with {@link PluginSpec<GitOptions>}. If Git plugin not in original array, returns the original array. * todo: deprecate for generic or parameterized function */ function setupGitPluginSpec(plugins) { let newPlugins = plugins; let gitPluginIndex = -1; function pluginSpecIsGit(pluginSpec, pluginSpecIndex) { if (pluginSpec === GitPluginId || pluginSpec[0] === GitPluginId) { gitPluginIndex = pluginSpecIndex; return true; } return false; } // if Git plugin not in load order, return as-is. if (!newPlugins.some(pluginSpecIsGit)) return plugins; // if string, replace with tuple with default options. newPlugins = newPlugins.map(plugin => plugin === GitPluginId ? [GitPluginId, DefaultOptions] : plugin); // ensure assets is an array newPlugins[gitPluginIndex][1].assets = gitAssetsToArray(newPlugins[gitPluginIndex][1].assets); const discardPile = []; // de-duplicate Git plugin entries; assign single entry to newPlugins[gitPluginIndex] newPlugins.forEach((current, i) => { if (i > gitPluginIndex && pluginSpecIsGit(current, gitPluginIndex)) { // convert its assets to an array const assets = newPlugins[i][1].assets; const message = newPlugins[i][1].message; // push unique assets to first entry's assets array if (assets !== undefined) newPlugins[gitPluginIndex][1].assets.push(...gitAssetsToArray(assets)); if (message !== undefined) newPlugins[gitPluginIndex][1].message = message; discardPile.push(i); } }); for (const i of discardPile.sort().reverse()) { newPlugins.splice(i, 1); } return newPlugins; } exports.DefaultOptions = DefaultOptions; exports.GitPluginId = GitPluginId; exports.setupGitPluginSpec = setupGitPluginSpec; //# sourceMappingURL=setupGitPluginSpec.cjs.map