'use strict' const Q = require('q') const _ = require('lodash') const conventionalChangelog = require('./conventional-changelog') const parserOpts = require('./parser-opts') const recommendedBumpOpts = require('./conventional-recommended-bump') const writerOpts = require('./writer-opts') module.exports = function (parameter) { // parameter passed can be either a config object or a callback function if (_.isFunction(parameter)) { // parameter is a callback object const config = {} // FIXME: use presetOpts(config) for callback Q.all([ conventionalChangelog(config), parserOpts(config), recommendedBumpOpts(config), writerOpts(config) ]).spread((conventionalChangelog, parserOpts, recommendedBumpOpts, writerOpts) => { parameter(null, { gitRawCommitsOpts: { noMerges: null }, conventionalChangelog, parserOpts, recommendedBumpOpts, writerOpts }) }) } else { const config = parameter || {} return presetOpts(config) } } function presetOpts (config) { return Q.all([ conventionalChangelog(config), parserOpts(config), recommendedBumpOpts(config), writerOpts(config) ]).spread((conventionalChangelog, parserOpts, recommendedBumpOpts, writerOpts) => { return { conventionalChangelog, parserOpts, recommendedBumpOpts, writerOpts } }) }