39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
const SemanticReleaseError = require('@semantic-release/error');
|
||
const AggregateError = require('aggregate-error');
|
||
const {isGitRepo, verifyAuth} = require('./git');
|
||
|
||
module.exports = async (options, branch, logger) => {
|
||
const errors = [];
|
||
|
||
if (!await isGitRepo()) {
|
||
logger.error('Semantic-release must run from a git repository.');
|
||
return false;
|
||
}
|
||
|
||
if (!options.repositoryUrl) {
|
||
errors.push(new SemanticReleaseError('The repositoryUrl option is required', 'ENOREPOURL'));
|
||
} else if (!await verifyAuth(options.repositoryUrl, options.branch)) {
|
||
errors.push(
|
||
new SemanticReleaseError(
|
||
`The git credentials doesn't allow to push on the branch ${options.branch}.`,
|
||
'EGITNOPERMISSION'
|
||
)
|
||
);
|
||
}
|
||
|
||
if (errors.length > 0) {
|
||
throw new AggregateError(errors);
|
||
}
|
||
|
||
if (branch !== options.branch) {
|
||
logger.log(
|
||
`This test run was triggered on the branch ${branch}, while semantic-release is configured to only publish from ${
|
||
options.branch
|
||
}, therefore a new version won’t be published.`
|
||
);
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
};
|