Select Git revision
upgrades.js
apis.js 9.28 KiB
const conventionalCommitsDetector = require('conventional-commits-detector');
const ini = require('ini');
const path = require('path');
const jsonValidator = require('json-dup-key-validator');
const configParser = require('../../config');
const configMigration = require('../../config/migration');
const configMassage = require('../../config/massage');
const configValidation = require('../../config/validation');
// API
const githubApi = require('../../api/github');
const gitlabApi = require('../../api/gitlab');
const npmApi = require('../../api/npm');
module.exports = {
detectSemanticCommits,
setNpmrc,
initApis,
mergeRenovateJson,
checkForLerna,
detectPackageFiles,
resolvePackageFiles,
migrateAndValidate,
};
async function detectSemanticCommits(config) {
const commitMessages = await config.api.getCommitMessages();
config.logger.trace(`commitMessages=${JSON.stringify(commitMessages)}`);
const type = conventionalCommitsDetector(commitMessages);
if (type === 'unknown') {
config.logger.debug('No semantic commit type found');
return false;
}
config.logger.debug(
`Found semantic commit type ${type} - enabling semantic commits`
);
return true;
}
// Check for .npmrc in repository and pass it to npm api if found
async function setNpmrc(config) {
try {
let npmrc = null;
const npmrcContent = await config.api.getFileContent('.npmrc');
if (npmrcContent) {
config.logger.debug('Found .npmrc file in repository');
npmrc = ini.parse(npmrcContent);
}
npmApi.setNpmrc(npmrc);
} catch (err) {
config.logger.error('Failed to set .npmrc');
}
}
async function checkForLerna(config) {
const lernaJson = await config.api.getFileJson('lerna.json');
if (!lernaJson) {
return {};
}
config.logger.debug({ lernaJson }, 'Found lerna config');
try {
const packagesPath = lernaJson.packages[0].slice(0, -2);
const lernaPackages = await config.api.getSubDirectories(packagesPath);
if (lernaPackages.length === 0) {
return {};
}
return { lernaPackages };
} catch (err) {
config.logger.warn('lerna getSubDirectories error');
return {};
}