Skip to content
Snippets Groups Projects
Commit b498c52e authored by Rhys Arkins's avatar Rhys Arkins
Browse files

Large refactor of config and helpers

parent b3a89c15
No related branches found
No related tags found
No related merge requests found
/node_modules
/src/config.js
/config.js
/npm-debug.log
......@@ -7,14 +7,13 @@ const logger = new (winston.Logger)({
],
});
module.exports = {
module.exports = function init() {
// This function reads in all configs and merges them
init(argv) {
/* eslint-disable global-require */
const defaultConfig = require('../defaults');
let customConfig = {};
try {
customConfig = require('../config');
customConfig = require('../../config');
} catch (err) {
// Do nothing
}
......@@ -27,8 +26,8 @@ module.exports = {
cliConfig.token = process.env.RENOVATE_TOKEN;
}
// Check if repository name and package file are provided via CLI
const repoName = argv[2];
const packageFile = argv[3] || 'package.json';
const repoName = process.argv[2];
const packageFile = process.argv[3] || 'package.json';
if (repoName) {
cliConfig.repositories = [
{
......@@ -70,5 +69,4 @@ module.exports = {
}
return config;
},
};
const ghGot = require('gh-got');
let config = {};
const config = {};
let logger = null;
module.exports = {
init,
module.exports = function github(setLogger) {
logger = setLogger;
this.initRepo = initRepo;
// Package File
getPackageFile,
getPackageFileContents,
writePackageFile,
this.getPackageFile = getPackageFile;
this.getPackageFileContents = getPackageFileContents;
this.writePackageFile = writePackageFile;
// Branch
createBranch,
this.createBranch = createBranch;
// PR
checkForClosedPr,
createPr,
getPr,
updatePr,
this.checkForClosedPr = checkForClosedPr;
this.createPr = createPr;
this.getPr = getPr;
this.updatePr = updatePr;
return this;
};
// Initialize GitHub by getting base branch and SHA
function init(setConfig, repoName, packageFile) {
config = setConfig;
logger = config.logger;
function initRepo(token, repoName) {
config.token = token;
config.repoName = repoName;
config.packageFile = packageFile;
return getRepo()
.then(processRepo)
.catch((err) => {
logger.error(`GitHub init error: ${err}`);
throw err;
});
function getRepo() {
logger.debug(`Getting repo ${repoName}`);
return ghGot(`repos/${config.repoName}`, { token: config.token })
.then(res => res.body);
}
function processRepo(repo) {
logger.debug(`Processing repo ${repoName}`);
config.owner = repo.owner.login;
config.defaultBranch = repo.default_branch;
}
function getRepoSHA() {
return ghGot(`repos/${config.repoName}/git/refs/head`, {
token: config.token,
}).then((res) => {
......@@ -50,14 +56,6 @@ function init(setConfig, repoName, packageFile) {
return Promise.resolve();
});
}
return getRepo()
.then(processRepo)
.then(getRepoSHA)
.catch((err) => {
logger.error(`GitHub init error: ${err}`);
throw err;
});
}
// Package File
......@@ -65,7 +63,8 @@ function getPackageFile(branchName) {
return getFile(config.packageFile, branchName);
}
function getPackageFileContents() {
function getPackageFileContents(packageFile) {
config.packageFile = packageFile;
return getFileContents(config.packageFile);
}
......
......@@ -2,29 +2,15 @@ const got = require('got');
const semver = require('semver');
const stable = require('semver-stable');
let config = {};
let logger = null;
module.exports = {
init(setConfig) {
config = setConfig;
logger = config.logger;
},
getDependencies(packageContents) {
const allDependencies = [];
const dependencyTypes = ['dependencies', 'devDependencies'];
dependencyTypes.forEach((depType) => {
Object.keys(packageContents[depType]).forEach((depName) => {
allDependencies.push({
depType,
depName,
currentVersion: packageContents[depType][depName],
});
});
});
return allDependencies;
},
getAllDependencyUpgrades(packageContents) {
module.exports = function npm(setLogger) {
logger = setLogger;
this.getAllDependencyUpgrades = getAllDependencyUpgrades;
return this;
};
function getAllDependencyUpgrades(packageContents) {
const allDependencyChecks = [];
const allDependencyUpgrades = [];
const dependencyTypes = ['dependencies', 'devDependencies'];
......@@ -59,8 +45,7 @@ module.exports = {
});
});
return Promise.all(allDependencyChecks).then(() => allDependencyUpgrades);
},
};
}
function getDependency(depName) {
// supports scoped packages, e.g. @user/package
......
......@@ -2,8 +2,8 @@ const _ = require('lodash');
let logger = null;
module.exports = function packageJson(config) {
logger = config.logger;
module.exports = function packageJson(setLogger) {
logger = setLogger;
this.setNewValue = setNewValue;
return this;
};
......
const semver = require('semver');
const configurator = require('./helpers/config');
const config = configurator.init(process.argv);
const github = require('./helpers/github');
const npm = require('./helpers/npm');
const packageJson = require('./helpers/packageJson')(config);
// Initialize config
const config = require('./helpers/config')();
// Expose logger
const logger = config.logger;
// Initialize npm
npm.init(config);
// Initialize helpers
const github = require('./helpers/github')(logger);
const npm = require('./helpers/npm')(logger);
const packageJson = require('./helpers/packageJson')(logger);
// Initialize our promise chain
let p = Promise.resolve();
......@@ -20,8 +18,7 @@ config.repositories.forEach((repo) => {
p = p.then(() => processRepoPackageFile(repo.name, packageFile));
});
});
// eslint-disable-next-line promise/always-return
p.then(() => {
p.then(() => { // eslint-disable-line promise/always-return
logger.info('Renovate finished');
})
.catch((error) => {
......@@ -30,12 +27,14 @@ p.then(() => {
// This function manages the queue per-package file
function processRepoPackageFile(repoName, packageFile) {
return initGitHub(repoName, packageFile)
return initGitHubRepo(repoName)
.then(() => { // eslint-disable-line arrow-body-style
return packageFile;
})
.then(getPackageFileContents)
.then(determineUpgrades)
.then(processUpgradesSequentially)
// eslint-disable-next-line promise/always-return
.then(() => {
.then(() => { // eslint-disable-line promise/always-return
logger.info(`Repo ${repoName} ${packageFile} done`);
})
.catch((error) => {
......@@ -43,14 +42,14 @@ function processRepoPackageFile(repoName, packageFile) {
});
}
function initGitHub(repoName, packageFile) {
logger.info(`Initializing GitHub repo ${repoName}, ${packageFile}`);
return github.init(config, repoName, packageFile);
function initGitHubRepo(repoName) {
logger.info(`Initializing GitHub repo ${repoName}`);
return github.initRepo(config.token, repoName);
}
function getPackageFileContents() {
logger.info('Getting package file contents');
return github.getPackageFileContents();
function getPackageFileContents(packageFile) {
logger.info(`Getting ${packageFile} contents`);
return github.getPackageFileContents(packageFile);
}
function determineUpgrades(packageFileContents) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment