Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

upgrades.js

Blame
  • 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 {};
      }