- Allow `publish` plugins to return an `Object` with information related to the releases - Add the `success` plugin hook, called when all `publish` are successful, receiving a list of release - Add the `fail` plugin hook, called when an error happens at any point, receiving a list of errors - Add detailed message for each error
62 lines
1.9 KiB
JavaScript
62 lines
1.9 KiB
JavaScript
const {isString, isFunction, isArray, isPlainObject} = require('lodash');
|
|
const RELEASE_TYPE = require('./release-types');
|
|
|
|
const validatePluginConfig = conf => isString(conf) || isString(conf.path) || isFunction(conf);
|
|
|
|
module.exports = {
|
|
verifyConditions: {
|
|
default: ['@semantic-release/npm', '@semantic-release/github'],
|
|
config: {
|
|
validator: conf => !conf || (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
},
|
|
},
|
|
analyzeCommits: {
|
|
default: '@semantic-release/commit-analyzer',
|
|
config: {
|
|
validator: conf => Boolean(conf) && validatePluginConfig(conf),
|
|
},
|
|
output: {
|
|
validator: output => !output || RELEASE_TYPE.includes(output),
|
|
error: 'EANALYZEOUTPUT',
|
|
},
|
|
},
|
|
verifyRelease: {
|
|
default: false,
|
|
config: {
|
|
validator: conf => !conf || (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
},
|
|
},
|
|
generateNotes: {
|
|
default: '@semantic-release/release-notes-generator',
|
|
config: {
|
|
validator: conf => !conf || validatePluginConfig(conf),
|
|
},
|
|
output: {
|
|
validator: output => !output || isString(output),
|
|
error: 'ERELEASENOTESOUTPUT',
|
|
},
|
|
},
|
|
publish: {
|
|
default: ['@semantic-release/npm', '@semantic-release/github'],
|
|
config: {
|
|
validator: conf => Boolean(conf) && (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
},
|
|
output: {
|
|
validator: output => !output || isPlainObject(output),
|
|
error: 'EPUBLISHOUTPUT',
|
|
},
|
|
},
|
|
success: {
|
|
default: ['@semantic-release/github'],
|
|
config: {
|
|
validator: conf => !conf || (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
},
|
|
},
|
|
fail: {
|
|
default: ['@semantic-release/github'],
|
|
config: {
|
|
validator: conf => !conf || (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
},
|
|
},
|
|
};
|