43 lines
1.8 KiB
JavaScript
43 lines
1.8 KiB
JavaScript
const {isString, isFunction, isArray, isPlainObject} = require('lodash');
|
|
const {RELEASE_TYPE} = require('./constants');
|
|
|
|
const validatePluginConfig = conf => isString(conf) || isString(conf.path) || isFunction(conf);
|
|
|
|
module.exports = {
|
|
verifyConditions: {
|
|
default: ['@semantic-release/npm', '@semantic-release/github'],
|
|
configValidator: conf => !conf || (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
},
|
|
analyzeCommits: {
|
|
default: '@semantic-release/commit-analyzer',
|
|
configValidator: conf => Boolean(conf) && validatePluginConfig(conf),
|
|
outputValidator: output => !output || RELEASE_TYPE.includes(output),
|
|
},
|
|
verifyRelease: {
|
|
default: false,
|
|
configValidator: conf => !conf || (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
},
|
|
generateNotes: {
|
|
default: '@semantic-release/release-notes-generator',
|
|
configValidator: conf => !conf || validatePluginConfig(conf),
|
|
outputValidator: output => !output || isString(output),
|
|
},
|
|
prepare: {
|
|
default: ['@semantic-release/npm'],
|
|
configValidator: conf => !conf || (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
},
|
|
publish: {
|
|
default: ['@semantic-release/npm', '@semantic-release/github'],
|
|
configValidator: conf => !conf || (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
outputValidator: output => !output || isPlainObject(output),
|
|
},
|
|
success: {
|
|
default: ['@semantic-release/github'],
|
|
configValidator: conf => !conf || (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
},
|
|
fail: {
|
|
default: ['@semantic-release/github'],
|
|
configValidator: conf => !conf || (isArray(conf) ? conf : [conf]).every(conf => validatePluginConfig(conf)),
|
|
},
|
|
};
|